Pest Control Wiki pestcontrolwikiwiki https://pestcontrolwiki.miraheze.org/wiki/Main_Page MediaWiki 1.40.2 first-letter Media Special Talk User User talk Pest Control Wiki Pest Control Wiki talk File File talk MediaWiki MediaWiki talk Template Template talk Help Help talk Category Category talk Module Module talk Main Page 0 1 1 2024-01-02T21:28:25Z MediaWiki default 1 Welcome to Miraheze! wikitext text/x-wiki __NOTOC__ == Welcome to {{SITENAME}}! == This Main Page was created automatically and it seems it hasn't been replaced yet. === For the bureaucrat(s) of this wiki === Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting. You can immediately start working on your wiki or whenever you want. Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links: * [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users) * [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]] * [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.) ==== I still don't understand X! ==== Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here: * [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]] * On [[phab:|Phabricator]] * On [https://miraheze.org/discord Discord] * On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat]) === For visitors of this wiki === Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later! 21236ac3f8d65e5563b6da6b70815ca6bf1e6616 6 1 2024-01-02T22:29:11Z Laggardson 2 wikitext text/x-wiki {{ColoredBox |title=Welcome! |background-title-color=#ff0000 |center-title=true |center-content=true |content= Welcome to Pest Control Wiki - a wiki for the actual-play podcast ''[[Pest Control]]''! <p><strong>Official Links</strong><br> [https://twitter.com/PestControlPod Twitter] • [https://cohost.org/pestcontrolpod Cohost] • [https://discord.gg/uv9bzF6RPY Discord] </p> <p><strong>Contribute to the Wiki</strong><br> <strong>{{NUMBEROFARTICLES}} PAGES</strong> • [[Main_Page|Getting Started]]</p> }} {{ColoredBox |title=Seasons |background-title-color=#ff0000 |center-title=true |content = {{ContentFlex |style=flex-wrap:wrap;justify-content:center;flex-grow:0 |content= {{Home season list item |filename= |imagepage= |text='''''[[Fate]]''''' }} {{Home season list item |filename= |imagepage= |text='''''[[Norfork]]''''' }} }} |center-content=true }} }} {{ColoredBox |title = The Cast |background-title-color=#ff0000 |center-content=true|center-title=true |content = [[Sam Richardson]] • [[William White]] • [[Jonas Newhouse]] • [[Sam Darr]] }} __NOTOC__ == Welcome to {{SITENAME}}! == This Main Page was created automatically and it seems it hasn't been replaced yet. === For the bureaucrat(s) of this wiki === Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting. You can immediately start working on your wiki or whenever you want. Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links: * [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users) * [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]] * [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.) ==== I still don't understand X! ==== Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here: * [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]] * On [[phab:|Phabricator]] * On [https://miraheze.org/discord Discord] * On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat]) === For visitors of this wiki === Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later! 27ef83d10b084f130554c128d412eb2a2d905062 Pest Control 0 2 2 2024-01-02T22:00:40Z Laggardson 2 Created page with " '''''Pest Control''''' is a tabletop actual-play horror podcast. It started as a livestream on the [[AltHaven]] YouTube channel in 2018. It currently has 50 episodes. == Cast == The cast of Pest Control are: * [[Sam Richardson]] * [[William White]] * [[Jonas Newhouse]] * [[Sam Darr]] == The Seasons == * Season 1: [[Fate|''Fate'']] (2018–2019) * Season 2: [[Norfork|''Norfork'']] (2022–current) == Notes == <references group="Note" /> == References == {{Refl..." wikitext text/x-wiki '''''Pest Control''''' is a tabletop actual-play horror podcast. It started as a livestream on the [[AltHaven]] YouTube channel in 2018. It currently has 50 episodes. == Cast == The cast of Pest Control are: * [[Sam Richardson]] * [[William White]] * [[Jonas Newhouse]] * [[Sam Darr]] == The Seasons == * Season 1: [[Fate|''Fate'']] (2018–2019) * Season 2: [[Norfork|''Norfork'']] (2022–current) == Notes == <references group="Note" /> == References == {{Reflist}} [[Category:Pest Control]] ab5ba2fbdb20c52a2c9a5ab3c818c9afe5059e7e MediaWiki:Sidebar 8 3 3 2024-01-02T22:13:34Z Laggardson 2 Created page with "*'''Seasons''' ** Seasons|seasons *'''Navigation''' ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * SEARCH * TOOLBOX * LANGUAGES" wikitext text/x-wiki *'''Seasons''' ** Seasons|seasons *'''Navigation''' ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * SEARCH * TOOLBOX * LANGUAGES 9d777dbdf2384c167d0f119e21ffbd09856fd508 4 3 2024-01-02T22:15:12Z Laggardson 2 wikitext text/x-wiki *Seasons ** Seasons|Seasons *Navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * SEARCH * TOOLBOX * LANGUAGES 931cdbe85da08b8294766fcbc639bdd6a4d6a5f5 5 4 2024-01-02T22:18:15Z Laggardson 2 wikitext text/x-wiki *Seasons **Fate|Fate **Norfork|Norfork *Navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * SEARCH * TOOLBOX * LANGUAGES d2d2a84f8cf5dffa2ad4e906a6886251527eafe1 Template:ColoredBox 10 4 7 2024-01-02T22:31:02Z Laggardson 2 Created page with "<templatestyles src="ColoredBox/style.css"/> <div class="mw-tpl-colorbox {{{class|}}}" style="{{#if:{{{background-content-color|}}} | background-color: {{{background-content-color | #ffffff}}}; }} {{#if:{{{background-title-color|}}} | border-color:{{{background-title-color}}} | #e2e2e2}} {{{colorbox-style|}}}"> {{#if:{{{title|}}}|<div class="mw-tpl-colorbox-title" style="{{#if:{{{background-title-color|}}}|background-color:{{{background-title-color|#e2e2e2}}};}}{{#if:{{{..." wikitext text/x-wiki <templatestyles src="ColoredBox/style.css"/> <div class="mw-tpl-colorbox {{{class|}}}" style="{{#if:{{{background-content-color|}}} | background-color: {{{background-content-color | #ffffff}}}; }} {{#if:{{{background-title-color|}}} | border-color:{{{background-title-color}}} | #e2e2e2}} {{{colorbox-style|}}}"> {{#if:{{{title|}}}|<div class="mw-tpl-colorbox-title" style="{{#if:{{{background-title-color|}}}|background-color:{{{background-title-color|#e2e2e2}}};}}{{#if:{{{center-title|}}}|text-align:center|}}{{{colorbox-title-style|}}}">{{#if:{{{icon|}}}|[[File:{{{icon}}}|20px|class=colorbox-title-icon|link=|alt=]]&#32;}}<strong style="{{#if:{{{title-color|}}}| color: {{{title-color|#000000}}}; }}">{{{title}}}</strong>{{#if:{{{link|}}}|<div class="mw-tpl-colorbox-title-corner">[[{{{link}}}|<span style="{{#if:{{{link-color|{{{title-color|}}}}}}| color: {{{link-color|{{{title-color|}}}}}}; }}">{{{view-text|view}}}</span>]]</div>}}</div>|}} <div class="mw-tpl-colorbox-content" style="{{#if:{{{center-content|}}}|text-align:center|}}{{{colorbox-content-style|}}}"> {{{content}}} </div> </div><noinclude> [[Category:Templates]] [[Category:Layout Templates]] [[Category:Decorative Templates]] </noinclude> dd0ee37794e36c95fec28d1c1f0a085a212811da 31 7 2024-01-03T16:13:24Z Laggardson 2 wikitext text/x-wiki <templatestyles src="ColoredBox/style.css"/> <div class="mw-tpl-colorbox {{{class|}}}" style="{{#if:{{{background-content-color|}}} | background-color: {{{background-content-color | #ffffff}}}; }} {{#if:{{{background-title-color|}}} | border-color:{{{background-title-color}}} | #e2e2e2}} {{{colorbox-style|}}}"> {{#if:{{{title|}}}|<div class="mw-tpl-colorbox-title" style="{{#if:{{{background-title-color|}}}|background-color:{{{background-title-color|#e2e2e2}}};}}{{#if:{{{center-title|}}}|text-align:center|}}{{{colorbox-title-style|}}}">{{#if:{{{icon|}}}|[[File:{{{icon}}}|20px|class=colorbox-title-icon|link=|alt=]]&#32;}}<strong style="{{#if:{{{title-color|}}}| color: {{{title-color|#000000}}}; }}">{{{title}}}</strong>{{#if:{{{link|}}}|<div class="mw-tpl-colorbox-title-corner">[[{{{link}}}|<span style="{{#if:{{{link-color|{{{title-color|}}}}}}| color: {{{link-color|{{{title-color|}}}}}}; }}">{{{view-text|view}}}</span>]]</div>}}</div>|}} <div class="mw-tpl-colorbox-content" style="{{#if:{{{center-content|}}}|text-align:center|}}{{{colorbox-content-style|}}}"> {{{content}}} </div> </div><noinclude> [[Category:Templates]] [[Category:Layout Templates]] [[Category:Decorative Templates]] </noinclude> ##test 24aec46a2f1e38ad6a8971635bfc4236b29d144e 39 31 2024-01-03T17:53:31Z Laggardson 2 wikitext text/x-wiki <templatestyles src="ColoredBox/style.css"/> <div class="mw-tpl-colorbox {{{class|}}}" style="{{#if:{{{background-content-color|}}} | background-color: {{{background-content-color | #ffffff}}}; }} {{#if:{{{background-title-color|}}} | border-color:{{{background-title-color}}} | #e2e2e2}} {{{colorbox-style|}}}"> {{#if:{{{title|}}}|<div class="mw-tpl-colorbox-title" style="{{#if:{{{background-title-color|}}}|background-color:{{{background-title-color|#e2e2e2}}};}}{{#if:{{{center-title|}}}|text-align:center|}}{{{colorbox-title-style|}}}">{{#if:{{{icon|}}}|[[File:{{{icon}}}|20px|class=colorbox-title-icon|link=|alt=]]&#32;}}<strong style="{{#if:{{{title-color|}}}| color: {{{title-color|#000000}}}; }}">{{{title}}}</strong>{{#if:{{{link|}}}|<div class="mw-tpl-colorbox-title-corner">[[{{{link}}}|<span style="{{#if:{{{link-color|{{{title-color|}}}}}}| color: {{{link-color|{{{title-color|}}}}}}; }}">{{{view-text|view}}}</span>]]</div>}}</div>|}} <div class="mw-tpl-colorbox-content" style="{{#if:{{{center-content|}}}|text-align:center|}}{{{colorbox-content-style|}}}"> {{{content}}} </div> </div><noinclude> [[Category:Templates]] [[Category:Layout Templates]] [[Category:Decorative Templates]] </noinclude> dd0ee37794e36c95fec28d1c1f0a085a212811da Template:ContentFlex 10 5 8 2024-01-02T23:22:33Z Laggardson 2 Created page with "<templatestyles src="ContentFlex/style.css"/> <div class="content-flex-parent {{#if:{{{use-flex-grow|}}}|content-flex-children-grow|}}" style="{{{style|}}}"> {{{content}}} </div>" wikitext text/x-wiki <templatestyles src="ContentFlex/style.css"/> <div class="content-flex-parent {{#if:{{{use-flex-grow|}}}|content-flex-children-grow|}}" style="{{{style|}}}"> {{{content}}} </div> 25adc4ed752d3eb89f0999ecfd53329949b647d0 Template:ColoredBox/style.css 10 6 9 2024-01-02T23:31:04Z Laggardson 2 Created page with ".mw-tpl-colorbox { box-sizing:border-box; margin:0.5em; border-radius:0.2em; background:#fff; border-width:2px; border-style:solid; border-color:#e2e2e2; } .mw-tpl-colorbox-title { background:#e2e2e2; color:#000000; padding:0.5em 1em 0.5em 1em } .mw-tpl-colorbox-title-icon { opacity:0.8 } .mw-tpl-colorbox-title-corner { float:right; font-size:0.7em } .mw-tpl-colorbox-content { padding:0.5em 1em 0.5em 1em } .mw-tpl-colorbox-content::after { content:""; dis..." wikitext text/x-wiki .mw-tpl-colorbox { box-sizing:border-box; margin:0.5em; border-radius:0.2em; background:#fff; border-width:2px; border-style:solid; border-color:#e2e2e2; } .mw-tpl-colorbox-title { background:#e2e2e2; color:#000000; padding:0.5em 1em 0.5em 1em } .mw-tpl-colorbox-title-icon { opacity:0.8 } .mw-tpl-colorbox-title-corner { float:right; font-size:0.7em } .mw-tpl-colorbox-content { padding:0.5em 1em 0.5em 1em } .mw-tpl-colorbox-content::after { content:""; display:block; clear:both } fcbc232a1fd92d7e2b06798c1467185745bd68be 30 9 2024-01-03T14:31:04Z Laggardson 2 wikitext text/x-wiki .mw-tpl-colorbox { box-sizing:border-box; margin:0.5em; border-radius:0.2em; background:#fff; border-width:2px; border-style:solid; border-color:#e2e2e2; } .mw-tpl-colorbox-title { background:#e2e2e2; color:#000000; padding:0.5em 1em 0.5em 1em } .mw-tpl-colorbox-title-icon { opacity:0.8 } .mw-tpl-colorbox-title-corner { float:right; font-size:0.7em } .mw-tpl-colorbox-content { padding:0.5em 1em 0.5em 1em } .mw-tpl-colorbox-content::after { content:""; display:block; clear:both } ##test 5444fc3b805d4d9e714f4c13151e1645db68aeb2 32 30 2024-01-03T16:35:15Z Laggardson 2 wikitext text/x-wiki .mw-tpl-colorbox { box-sizing:border-box; margin:0.5em; border-radius:0.2em; background:#fff; border-width:2px; border-style:solid; border-color:#e2e2e2; } .mw-tpl-colorbox-title { background:#e2e2e2; color:#000000; padding:0.5em 1em 0.5em 1em } .mw-tpl-colorbox-title-icon { opacity:0.8 } .mw-tpl-colorbox-title-corner { float:right; font-size:0.7em } .mw-tpl-colorbox-content { padding:0.5em 1em 0.5em 1em } .mw-tpl-colorbox-content::after { content:""; display:block; clear:both } fcbc232a1fd92d7e2b06798c1467185745bd68be 33 32 2024-01-03T16:35:30Z Laggardson 2 Laggardson changed the content model of the page [[Template:ColoredBox/style.css]] from "wikitext" to "Sanitized CSS": Adjustment sanitized-css text/css .mw-tpl-colorbox { box-sizing:border-box; margin:0.5em; border-radius:0.2em; background:#fff; border-width:2px; border-style:solid; border-color:#e2e2e2; } .mw-tpl-colorbox-title { background:#e2e2e2; color:#000000; padding:0.5em 1em 0.5em 1em } .mw-tpl-colorbox-title-icon { opacity:0.8 } .mw-tpl-colorbox-title-corner { float:right; font-size:0.7em } .mw-tpl-colorbox-content { padding:0.5em 1em 0.5em 1em } .mw-tpl-colorbox-content::after { content:""; display:block; clear:both } fcbc232a1fd92d7e2b06798c1467185745bd68be Sam Richardson 0 7 10 2024-01-02T23:47:42Z Laggardson 2 Created page with "'''Sam Richardson''' is the GM and host of ''[[Pest Control]]''. == Characters == ===Main Seasons=== {| class="wikitable" ! style="background-color:#FDCE5E" |Season ! style="background-color:#FDCE5E" |Characters |- |''[[Fate]]'' |[[County Sans-Soleil]], [[Claret Holiday]] <sup>([[The Fellowship|WIH Holiday Special]])</sup> |- | rowspan="2" |''[[Norfork]]'' |[[Faction Game (COUNTER/Weight)|Faction game]] participant |- |[[Ibex]] <sup>(Kingdom (COUNTER/Weight)|Kingdo..." wikitext text/x-wiki '''Sam Richardson''' is the GM and host of ''[[Pest Control]]''. == Characters == ===Main Seasons=== {| class="wikitable" ! style="background-color:#FDCE5E" |Season ! style="background-color:#FDCE5E" |Characters |- |''[[Fate]]'' |[[County Sans-Soleil]], [[Claret Holiday]] <sup>([[The Fellowship|WIH Holiday Special]])</sup> |- | rowspan="2" |''[[Norfork]]'' |[[Faction Game (COUNTER/Weight)|Faction game]] participant |- |[[Ibex]] <sup>([[Kingdom (COUNTER/Weight)|Kingdom Arc]])</sup> |- |} [[Category:Cast]] {{Cast}} e6ace6ec3805825e80bfddf0a238e40390d60a1d 14 10 2024-01-03T01:11:00Z Laggardson 2 /* Main Seasons */ wikitext text/x-wiki '''Sam Richardson''' is the GM and host of ''[[Pest Control]]''. == Characters == ===Main Seasons=== {| class="wikitable" ! style="background-color:#FDCE5E" |Season ! style="background-color:#FDCE5E" |Characters |- |''[[Fate]]'' |[[Martin Graves]] |- | rowspan="2" |''[[Norfork]]'' |[[Faction Game (COUNTER/Weight)|Faction game]] participant |- |[[Simon Pip]], [[Sharon Sonnen]], [[Glymmer]], [[Almos Sumati]]<sup>Kingdom Game, Minor Character</sup> |- |} [[Category:Cast]] {{Cast}} c71b7d0f526543a3afb14b54a35de3c3e4166669 15 14 2024-01-03T01:11:50Z Laggardson 2 wikitext text/x-wiki '''Sam Richardson''' is the GM and host of ''[[Pest Control]]''. == Characters == ===Main Seasons=== {| class="wikitable" ! style="background-color:#FDCE5E" |Season ! style="background-color:#FDCE5E" |Characters |- |''[[Fate]]'' |[[Martin Graves]] |- | rowspan="2" |''[[Norfork]]'' |[[Simon Pip]], [[Sharon Sonnen]], [[Glymmer]], [[Almos Sumati]]<sup>Kingdom Game, Minor Character</sup> |- |} [[Category:Cast]] {{Cast}} 02fae0eb263ed7033dfb800aec762b9988d5f5ec Fate 0 8 11 2024-01-03T00:37:40Z Laggardson 2 Created page with "{{Infobox season |color_theme=aih |title=Season 1: Fate |image=[[]] |caption=Cover art by [https://twitter.com/shoddyrobot Craig Sheldon] |episodes=28 |release=September 12, 2014 - June 19, 2015 }} '''''Fate''''' (originally known as '''''Queuetimes: Monster of the Week''''') is the first season of ''Pest Control''. It is a game of ''[[Monster of the Week]]''. The first episode was released on [[AltHaven]] on March 24, 2019. It follows a group of found-family monster H..." wikitext text/x-wiki {{Infobox season |color_theme=aih |title=Season 1: Fate |image=[[]] |caption=Cover art by [https://twitter.com/shoddyrobot Craig Sheldon] |episodes=28 |release=September 12, 2014 - June 19, 2015 }} '''''Fate''''' (originally known as '''''Queuetimes: Monster of the Week''''') is the first season of ''Pest Control''. It is a game of ''[[Monster of the Week]]''. The first episode was released on [[AltHaven]] on March 24, 2019. It follows a group of found-family monster Hunters as they set off on a journey across the United States, dealing with the creatures they encounter and drawing ever nearer to the end of the road... == Episodes == ↳ [[List of Fate episodes]] == Characters == === Player Characters === *[[Keeley Stewart]] ([[William White]]): The Expert. *[[Henrietta Salm]] ([[Jonas Newhouse]]): The Monstrous. *[[Maggie]] ([[Sam Darr]]): The Spellslinger. === Major NPCs === ''See also'': [[:Category:Fate characters|Fate characters]] *[[Martin Graves]]: *[[Henry Sweezle]]: *[[Jordan "Jojo" Jesigo]]: *[[Xilin]]: == Notes== <references group="note" /> {{Fate episodes}} <p></p> {{Seasons}} {{Navbox}} [[Category:Fate]] [[Category:Monster of the Week]] [[Category:Seasons]] 16d6cc3fe0b71248c84216e53d64205244fa90e8 13 11 2024-01-03T00:40:27Z Laggardson 2 wikitext text/x-wiki {{Infobox season |color_theme=FF0000 |title=Season 1: Fate |image=[[]] |caption=Cover art by [https://twitter.com/shoddyrobot Craig Sheldon] |episodes=28 |release=September 12, 2014 - June 19, 2015 }} '''''Fate''''' (originally known as '''''Queuetimes: Monster of the Week''''') is the first season of ''Pest Control''. It is a game of ''[[Monster of the Week]]''. The first episode was released on [[AltHaven]] on March 24, 2019. It follows a group of found-family monster Hunters as they set off on a journey across the United States, dealing with the creatures they encounter and drawing ever nearer to the end of the road... == Episodes == ↳ [[List of Fate episodes]] == Characters == === Player Characters === *[[Keeley Stewart]] ([[William White]]): The Expert. *[[Henrietta Salm]] ([[Jonas Newhouse]]): The Monstrous. *[[Maggie]] ([[Sam Darr]]): The Spellslinger. === Major NPCs === ''See also'': [[:Category:Fate characters|Fate characters]] *[[Martin Graves]]: *[[Henry Sweezle]]: *[[Jordan "Jojo" Jesigo]]: *[[Xilin]]: == Notes== <references group="note" /> {{Fate episodes}} <p></p> {{Seasons}} {{Navbox}} [[Category:Fate]] [[Category:Monster of the Week]] [[Category:Seasons]] fe21a74f351352bfe54f7a1851fc85a3dd3cda01 25 13 2024-01-03T04:36:52Z Laggardson 2 wikitext text/x-wiki {{Infobox season |color_theme=FF0000 |title=Season 1: Fate |image=[[]] |caption=Cover art by [https://twitter.com/shoddyrobot Craig Sheldon] |episodes=15 |release=March 24, 2019 - December 3, 2019 }} '''''Fate''''' (originally known as '''''Queuetimes: Monster of the Week''''') is the first season of ''Pest Control''. It is a game of ''[[Monster of the Week]]''. The first episode was released on [[AltHaven]] on March 24, 2019. It follows a group of found-family monster Hunters as they set off on a journey across the United States, dealing with the creatures they encounter and drawing ever nearer to the end of the road... == Episodes == ↳ [[List of Fate episodes]] == Characters == === Player Characters === *[[Keeley Stewart]] ([[William White]]): The Expert. *[[Henrietta Salm]] ([[Jonas Newhouse]]): The Monstrous. *[[Maggie]] ([[Sam Darr]]): The Spellslinger. === Major NPCs === ''See also'': [[:Category:Fate characters|Fate characters]] *[[Martin Graves]]: *[[Henry Sweezle]]: *[[Jordan "Jojo" Jesigo]]: *[[Xilin]]: == Notes== <references group="note" /> {{Fate episodes}} <p></p> {{Seasons}} {{Navbox}} [[Category:Fate]] [[Category:Monster of the Week]] [[Category:Seasons]] 19ac7f6342adc0a6c48dc734e90cb42ecbc338cf Template:Infobox season 10 9 12 2024-01-03T00:38:22Z Laggardson 2 Created page with "<onlyinclude> <infobox theme-source="color_theme"> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"> <caption source="caption"/> </image> <data source="episodes"> <label>Episodes</label> </data> <data source="runtime"> <label>Runtime</label> </data> <data source="soundtrack"> <label>Soundtrack</label> </data> <data source="release"> <label>Release</label> </data> </infobox><!-- -->{{#ife..." wikitext text/x-wiki <onlyinclude> <infobox theme-source="color_theme"> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"> <caption source="caption"/> </image> <data source="episodes"> <label>Episodes</label> </data> <data source="runtime"> <label>Runtime</label> </data> <data source="soundtrack"> <label>Soundtrack</label> </data> <data source="release"> <label>Release</label> </data> </infobox><!-- -->{{#ifeq: {{NAMESPACENUMBER}} | 0 | {{#if: {{{color_theme|}}} || [[Category:Infoboxes with missing color theme]] }} | }}</onlyinclude><noinclude> <br style="clear:both;"/> {{Documentation}} [[Category:Infoboxes]]</noinclude> f0c584e60c80642b574acaf53f778d580831758f 24 12 2024-01-03T04:32:55Z Laggardson 2 wikitext text/x-wiki <onlyinclude> <infobox theme-source="color_theme"> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"> <caption source="caption"/> </image> <data source="episodes"> <label>Episodes</label> </data> <data source="runtime"> <label>Runtime</label> </data> <data source="soundtrack"> <label>Soundtrack</label> </data> <data source="release"> <label>Release</label> </data> </infobox><!-- -->{{#ifeq: {{NAMESPACENUMBER}} | 0 | {{#if: {{{color_theme|}}} || [[Category:Infoboxes with missing color theme]] }} | }}</onlyinclude><noinclude> <br style="clear:both;"/> [[Category:Infoboxes]]</noinclude> bbc85fb2ce2a8d6adb543cd3891daccf068f9623 List of Fate episodes 0 10 16 2024-01-03T01:15:05Z Laggardson 2 Created page with "Episodes of Season 1: ''[[Fate]]'', which ran from (date) to (date). {{Episode table | background=#FFB27B | season=1 | title=15 | airdate=10 | aux2=9 | aux2T=Runtime |episodes= {{Episode list |EpisodeNumber2=01 |Title=[[Marielda 01: The City of Light Pt. 1|The City of Light Pt. 1]] |AltDate=July 14, 2016 |Aux2=02:06:13 |ShortSummary=Austin, Art, Janine, Keith and Nick begin worldbuilding for the season, expanding [[Marielda (city)|Marielda]] from a sparse map into a c..." wikitext text/x-wiki Episodes of Season 1: ''[[Fate]]'', which ran from (date) to (date). {{Episode table | background=#FFB27B | season=1 | title=15 | airdate=10 | aux2=9 | aux2T=Runtime |episodes= {{Episode list |EpisodeNumber2=01 |Title=[[Marielda 01: The City of Light Pt. 1|The City of Light Pt. 1]] |AltDate=July 14, 2016 |Aux2=02:06:13 |ShortSummary=Austin, Art, Janine, Keith and Nick begin worldbuilding for the season, expanding [[Marielda (city)|Marielda]] from a sparse map into a city filled with turmoil. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=02 |Title=[[Marielda 02: The City of Light Pt. 2|The City of Light Pt. 2]] |AltDate=July 21, 2016 |Aux2=01:55:20 |ShortSummary=Marielda's quiet year continues, from the coming of the [[Pala-din]] in midsummer to the threat of the Frost Shepherds' winter arrival. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=03 |Title=[[Marielda 03: The Crosstown Job Pt. 1|The Crosstown Job Pt. 1]] |AltDate=August 5, 2016 |Aux2=02:37:15 |ShortSummary=Ali, Jack, Sylvi and Dre build their characters and their crew, [[The Six]], before embarking on their first heist: stealing the plates that control Marielda's new crosstown train. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=04 |Title=[[Marielda 04: The Crosstown Job Pt. 2|The Crosstown Job Pt. 2]] |AltDate=August 11, 2016 |Aux2=02:05:04 |ShortSummary=Aboard a rushing train fifty stories over Helianthus Parish, the members of The Six continue their attempt to steal the navigation plates of the Crosstown Express. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=05 |Title=[[Marielda 05: War and Azaleas|War and Azaleas]] |AltDate=August 19, 2016 |Aux2=01:29:30 |ShortSummary=The members of have some downtime after their successful heist, but begin to entangle themselves in the consequences of the criminal life. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=06 |Title=[[Marielda 06: The Valentine Affair Pt. 1|The Valentine Affair Pt. 1]] |AltDate=August 25, 2016 |Aux2=01:44:57 |ShortSummary=Looking for help to end their war with the [[Fontmen]], The Six embark upon a plan to steal a book from the famously guarded [[Memoriam College (Marielda)|Memoriam College]]. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=07 |Title=[[Marielda 07: The Valentine Affair Pt. 2|The Valentine Affair Pt. 2]] |AltDate=September 1, 2016 |Aux2=01:37:19 |ShortSummary=[[Aubrey]], [[Sige]] and [[Castille]] enter the library, where they face off with the [[Yellow House]]. Meanwhile, a traumatized [[Hitchcock]] makes his way to the rectory. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=08 |Title=[[Marielda 08: The Valentine Affair Pt. 3|The Valentine Affair Pt. 3]] |AltDate=September 9, 2016 |Aux2=01:57:15 |ShortSummary=The gang frees [[Maelgwyn]] from the library vault. Hitchcock has troubling dreams before finding himself running with [[Caroline Fair-Play]] from a [[Rector Sabinia|void nun]]. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=09 |Title=[[Marielda 09: The Valentine Affair Pt. 4|The Valentine Affair Pt. 4]] |AltDate=September 15, 2016 |Aux2=01:41:48 |ShortSummary=As the situation in and around Memoriam College gets increasingly unstable, the members of The Six do their best to escape with a stolen book and their lives. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=10 |Title=[[Marielda 10: Four Conversations|Four Conversations]] |AltDate=September 22, 2016 |Aux2=01:48:48 |ShortSummary=The Six go through an extended downtime period in the months between The Valentine Affair and their final job. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=11 |Title=[[Marielda 11: The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 1|The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 1]] |AltDate=September 30, 2016 |Aux2=01:35:36 |ShortSummary=The Six plan and begin their heist to kill Samothes, and face off against the Lance Nobles on their way into Samothes' volcano on [[High Sun Day]]. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=12 |Title=[[Marielda 12: The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 2|The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 2]] |AltDate=October 6, 2016 |Aux2=01:34:58 |ShortSummary=The train arrives at the volcano, where everyone is recieved by the [[Primo|Artificer Mundane]], who gives them new clothes. Afterwards, the group explores the volcano and more guests arrive. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=13 |Title=[[Marielda 13: The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 3|The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 3]] |AltDate=October 13, 2016 |Aux2=01:59:14 |ShortSummary=While exploring, Aubrey clashes with Samot's retinue of mages, and the rest of the group attempt to reconvene in time for dinner. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=14 |Title=[[Marielda 14: The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 4|The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 4]] |AltDate=October 20, 2016 |Aux2=02:01:30 |ShortSummary=The Six and the Mages follow Maelgwyn down to Samothes' forge. Sige tries and fails to stop Maelgwyn from killing Samothes with the [[Blade in the Dark]]. |LineColor=FFB27B }} }} == Live Episodes== Several [[Live at the Table]] episodes have been set in [[Marielda (city)|Marielda]] as well, taking place in the timeskip that occurs during [[Marielda 10: Four Conversations]]. {{Episode table | background=#FFB27B | season= | title=22 | airdate=10 | aux2=7 | aux2T=Runtime |episodes= {{Episode list | EpisodeNumber2 = 01 | Title = [[Live at the Table: Misspent Youth]] | ShortSummary = During the one year gap between "[[Marielda 09: The Valentine Affair Pt. 4|The Valentine Affair Pt. 4]]" and "[[Marielda 10: Four Conversations|Four Conversations]]" episodes, the young students of the mysterious [[The Yellow House|Yellow House]], a school of esoteric and eschatologic studies, defy authority. | AltDate = October 22, 2017<sup><ref group="note">The game was streamed live on October 22 and released in the podcast feed on December 15.</ref></sup> | LineColor = FFB27B | Aux2 = 04:59:07 }} {{Episode list | EpisodeNumber2 = 02 | Title = [[GenCon Liveshow Marielda]] | ShortSummary = In the time jump between "[[Marielda 09: The Valentine Affair Pt. 4|The Valentine Affair Pt. 4]]" and "[[Marielda 10: Four Conversations|Four Conversations]]," Aubrey and Sige find themselves teamed up with a rival gang on a robbery like no other. | AltDate = August 3, 2019<sup><ref group="note">The game was held at GenCon on August 3, 2019 and released in the podcast feed on July 6, 2022.</ref></sup> | LineColor = FFB27B | Aux2 = 02:11:57 }} {{Episode list | EpisodeNumber2 = 03 | Title = [[Marathon Livestream: Return to Marielda]] | ShortSummary = Out-a-towners with mysterious pasts and glorious masks have a spot on the stage and job for [[Hitchcock]], [[Castille]], and the rest: help them steal their names back. | AltDate = July 4, 2022<sup><ref group="note">The game was streamed live on July 4, with the audio being released in the podcast feed on August 5.</ref></sup> | LineColor = FFB27B | Aux2 = 05:04:22 }}}} ==Notes== {{reflist|group=note}} {{Marielda episodes}} {{NavboxMarielda}} [[Category:Marielda]] [[Category:Lists of episodes]] 971e852b830b1eb661c4a12ecef9c4ebac712307 Module:Episode table 828 11 17 2024-01-03T02:43:29Z Laggardson 2 Created page with "-- This module implements {{Episode table}} and {{Episode table/part}}. local HTMLcolor = mw.loadData( 'Module:Color contrast/colors' ) -------------------------------------------------------------------------------- -- EpisodeTable class -- The main class. -------------------------------------------------------------------------------- local contrast_ratio = require('Module:Color contrast')._ratio local EpisodeTable = {} function EpisodeTable.cell(background, width,..." Scribunto text/plain -- This module implements {{Episode table}} and {{Episode table/part}}. local HTMLcolor = mw.loadData( 'Module:Color contrast/colors' ) -------------------------------------------------------------------------------- -- EpisodeTable class -- The main class. -------------------------------------------------------------------------------- local contrast_ratio = require('Module:Color contrast')._ratio local EpisodeTable = {} function EpisodeTable.cell(background, width, text, reference) local cell = mw.html.create('th') -- Width local cell_width if width == 'auto' then cell_width = 'auto' elseif tonumber(width) ~= nil then cell_width = width .. '%' else cell_width = nil end -- Cell cell:attr('scope','col') :css('background',background or '#CCCCFF') :css('width',cell_width) :wikitext(text) -- Reference if reference and reference ~= '' then cell:wikitext("&#8202;" .. EpisodeTable.reference(reference, background)) end return cell end function EpisodeTable.reference(reference, background) local link1_cr = contrast_ratio{'#0645AD', background or '#CCCCFF', ['error'] = 0} local link2_cr = contrast_ratio{'#0B0080', background or '#CCCCFF', ['error'] = 0} local refspan = mw.html.create('span') :wikitext(reference) if link1_cr < 7 or link2_cr < 7 then refspan :css('background-color','white') :css('padding','1px') :css('display','inline-block') :css('line-height','50%') end return tostring(refspan) end function EpisodeTable.abbr(text,title) local abbr = mw.html.create('abbr') :attr('title',title) :wikitext(text) return tostring(abbr) end function EpisodeTable.part(frame,args) local row = mw.html.create('tr') local black_cr = contrast_ratio{args.c or '#CCCCFF', 'black', ['error'] = 0} local white_cr = contrast_ratio{'white', args.c or '#CCCCFF', ['error'] = 0} local isPartSet = (args.chapter or args.volume or args.part or args.p) local displaytext = ( (args.chapter and 'Chapter ' .. args.chapter) or (args.volume and 'Volume ' .. args.volume) or ((not args.nopart and isPartSet) and 'Part ' .. (args.part or args.p or '')) or (args.part or args.p or '') ) .. (args.subtitle and ((isPartSet and ": " or "") .. "<em>" .. args.subtitle .. "</em>") or '') local plainText = require('Module:Plain text')._main local displayTextAnchor = plainText(displaytext) row:tag('td') :attr('colspan', 13) :attr('id', args.id or displayTextAnchor) :css('text-align', 'center') :css('background-color', args.c or '#CCCCFF') :css('color', black_cr > white_cr and 'black' or 'white') :wikitext("'''" .. displaytext .. "'''" .. (args.r and "&#8202;" .. EpisodeTable.reference(args.r, args.c) or '')) return tostring(row) end function EpisodeTable.new(frame,args) args = args or {} local categories = '' local background = (args.background and args.background ~= '' and args.background ~= '#') and args.background or nil -- Add # to background if necessary if background ~= nil and HTMLcolor[background] == nil then background = '#'..(mw.ustring.match(background, '^[%s#]*([a-fA-F0-9]*)[%s]*$') or '') end -- Default widths noted by local consensus local defaultwidths = {}; defaultwidths.overall = 5; defaultwidths.overall2 = 5; defaultwidths.season = 5; defaultwidths.series = 5; defaultwidths.prodcode = 7; defaultwidths.viewers = 10; -- Create episode table local root = mw.html.create('table') -- Table width local table_width = string.gsub(args.total_width or '','%%','') if args.total_width == 'auto' or args.total_width == '' then table_width = 'auto' elseif tonumber(table_width) ~= nil then table_width = table_width .. '%' else table_width = '100%' end root :addClass('wikitable') :addClass('plainrowheaders') :addClass('wikiepisodetable') :css('width', table_width) -- Caption if args.show_caption then -- Visible caption option, with a tracking category root:tag('caption'):wikitext(args.caption) categories = categories .. '[[Category:Articles using Template:Episode table with a visible caption]]' elseif args.caption then -- If a visible caption isn't defined, then default to the screenreader-only caption root:tag('caption'):wikitext(frame:expandTemplate{title='Screen reader-only',args={args.caption}}) end -- Colour contrast; add to category only if it's in the mainspace local title = mw.title.getCurrentTitle() local black_cr = contrast_ratio{background, 'black', ['error'] = 0} local white_cr = contrast_ratio{'white', background, ['error'] = 0} -- Main row local mainRow = root:tag('tr') mainRow :css('color', background and (black_cr > white_cr and 'black' or 'white') or 'black') :css('text-align', 'center') -- Cells do local used_season = false local country = args.country ~= '' and args.country ~= nil local viewers = (country and args.country or '') .. ' ' .. (country and 'v' or 'V') .. 'iewers' .. ((not args.viewers_type or args.viewers_type ~= '') and '<br />(' .. (args.viewers_type or 'millions') .. ')' or '') local cellNames = { {'overall','EpisodeNumber',EpisodeTable.abbr('No.','Number') .. ((args.season or args.series or args.EpisodeNumber2 or args.EpisodeNumber2Series or args.forceoverall) and '<br />'..(args.overall_type or 'overall') or '')}, {'overall2','*',''}, {'season','EpisodeNumber2',EpisodeTable.abbr('No.','Number') .. ' in<br />'..(args.season_type or 'season')}, {'series','EpisodeNumber2Series',EpisodeTable.abbr('No.','Number') .. ' in<br />'..(args.series_type or 'series')}, {'title','Title','Title'}, {'aux1','Aux1',''}, {'director','DirectedBy','Directed by'}, {'writer','WrittenBy','Written by'}, {'aux2','Aux2',''}, {'aux3','Aux3',''}, {'airdate','OriginalAirDate','Original ' .. (args.released and 'release' or 'air') .. ' date'}, {'altdate','AltDate',''}, {'guests','Guests','Guest(s)'}, {'musicalguests','MusicalGuests','Musical/entertainment guest(s)'}, {'prodcode','ProdCode',EpisodeTable.abbr('Prod.','Production') .. '<br />code'}, {'viewers','Viewers',viewers}, {'aux4','Aux4',''} } for k,v in pairs(cellNames) do local thisCell = args[v[1]] or args[v[2]] if thisCell and (v[1] ~= 'series' or (v[1] == 'series' and used_season == false)) then if v[1] == 'season' then used_season = true end if (k <= 3 and thisCell == '') then thisCell = '5' end if (thisCell == '' and defaultwidths[v[1]]) then thisCell = defaultwidths[v[1]] end local thisCellT = args[v[1] .. 'T'] or args[v[2] .. 'T'] local thisCellR = args[v[1] .. 'R'] or args[v[2] .. 'R'] mainRow:node(EpisodeTable.cell(background, thisCell, thisCellT or v[3], thisCellR)) end end -- Episodes if args.episodes then if args.anchor then args.episodes = string.gsub(args.episodes, "(id=\")(ep%w+\")", "%1" .. args.anchor .. "%2") end root:node(args.episodes) end end return (args.dontclose and mw.ustring.gsub(tostring(root), "</table>", "") or tostring(root)) .. categories end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p = {} function p.main(frame) local args = require('Module:Arguments').getArgs(frame, { removeBlanks = false, wrappers = 'Template:Episode table' }) return EpisodeTable.new(frame,args) end function p.part(frame) local args = require('Module:Arguments').getArgs(frame, { removeBlanks = false, wrappers = 'Template:Episode table/part' }) return EpisodeTable.part(frame,args) end function p.ref(frame) local args = require('Module:Arguments').getArgs(frame, { removeBlanks = false, }) return EpisodeTable.reference(args.r,args.b) end return p 9f2f8e9a3eadb0e0a98c80d3a2e03949713541ee William White 0 12 18 2024-01-03T03:12:11Z Laggardson 2 Created page with "'''William White''' is a cast member on ''Pest Control'’. They also mix the audio for the show, and create original music alongside [[Jonas Newhouse]]. They are also in the band “glass beach”. == Characters == === Main Seasons === {| class="wikitable" |- ! style="background-color:#FDCE5E" |Season ! style="background-color:#FDCE5E" |Role(s) |- |[[Seasons of Hieron|''Seasons of Hieron'']] |[[Hella Varal]] |- | rowspan="2" |''[[Norfork]]'' |[[Kelly Aberdeen]] |- | [..." wikitext text/x-wiki '''William White''' is a cast member on ''Pest Control'’. They also mix the audio for the show, and create original music alongside [[Jonas Newhouse]]. They are also in the band “glass beach”. == Characters == === Main Seasons === {| class="wikitable" |- ! style="background-color:#FDCE5E" |Season ! style="background-color:#FDCE5E" |Role(s) |- |[[Seasons of Hieron|''Seasons of Hieron'']] |[[Hella Varal]] |- | rowspan="2" |''[[Norfork]]'' |[[Kelly Aberdeen]] |- | [[Jace Rethal]] <sup>([[Kingdom (COUNTER/Weight)|Kingdom Arc]])</sup> |- |[[Marielda (season)|''Marielda'']] |[[Charter Castille]] |- |[[Twilight Mirage|''Twilight Mirage'']] |[[Tender Sky]] |- | rowspan="2" |''[[PARTIZAN]]'' |[[Kal'mera Broun]] |- |[[Eiden Teak]] <sup>([[Kingdom (PARTIZAN)|Millennium Break Arc]])</sup> |- |''[[Sangfielle]]'' |[[Marn Ancura]] |- |''[[PALISADE]]'' |[[Kalvin Brnine]] |} {{Friends}} [[Category:Friends]] acffce3d82c37e6a2d5504887676d8cce9dac53e 19 18 2024-01-03T03:51:20Z Laggardson 2 wikitext text/x-wiki '''William White''' is a cast member on ''Pest Control'’. They also mix the audio for the show, and create original music alongside [[Jonas Newhouse]]. They are also in the band “glass beach”. == Characters == === Main Seasons === {| class="wikitable" |- ! style="background-color:#FDCE5E" |Season ! style="background-color:#FDCE5E" |Role(s) |- |[[Fate]] |[[Keeley Stewart]] |- | rowspan="2" |''[[Norfork]]'' |[[Kelly Aberdeen]] |- | [[Nort Port]] <sup>(Kingdom)</sup> |- |[[Liz Borger]] <sup>(Kingdom)</sup> |- |[[Twilight Mirage|''Twilight Mirage'']] |[[Tender Sky]] |- | rowspan="2" |''[[PARTIZAN]]'' |[[Kal'mera Broun]] |- |[[Eiden Teak]] <sup>([[Kingdom (PARTIZAN)|Millennium Break Arc]])</sup> |- |''[[Sangfielle]]'' |[[Marn Ancura]] |- |''[[PALISADE]]'' |[[Kalvin Brnine]] |} {{Friends}} [[Category:Friends]] 47b0e193e86488eaacb467b86fc6ad97d2f3de34 20 19 2024-01-03T03:52:23Z Laggardson 2 /* Main Seasons */ wikitext text/x-wiki '''William White''' is a cast member on ''Pest Control'’. They also mix the audio for the show, and create original music alongside [[Jonas Newhouse]]. They are also in the band “glass beach”. == Characters == === Main Seasons === {| class="wikitable" |- ! style="background-color:#FDCE5E" |Season ! style="background-color:#FDCE5E" |Role(s) |- |[[Fate]] |[[Keeley Stewart]] |- | rowspan="2" |''[[Norfork]]'' |[[Kelly Aberdeen]] |- | [[Nort Port]] <sup>(Kingdom)</sup> |- | [[Liz Borger]] <sup>(Kingdom)</sup> |- |[[Twilight Mirage|''Twilight Mirage'']] |[[Tender Sky]] |- | rowspan="2" |''[[PARTIZAN]]'' |[[Kal'mera Broun]] |- |[[Eiden Teak]] <sup>([[Kingdom (PARTIZAN)|Millennium Break Arc]])</sup> |- |''[[Sangfielle]]'' |[[Marn Ancura]] |- |''[[PALISADE]]'' |[[Kalvin Brnine]] |} {{Friends}} [[Category:Friends]] 56540996866ad71715d1565980d275c78fa42b1a 21 20 2024-01-03T04:07:25Z Laggardson 2 /* Main Seasons */ wikitext text/x-wiki '''William White''' is a cast member on ''Pest Control'’. They also mix the audio for the show, and create original music alongside [[Jonas Newhouse]]. They are also in the band “glass beach”. == Characters == === Main Seasons === {| class="wikitable" |- ! style="background-color:#FDCE5E" |Season ! style="background-color:#FDCE5E" |Role(s) |- |[[Fate]] |[[Keeley Stewart]] |- | rowspan="5" |''[[Norfork]]'' |[[Kelly Aberdeen]] |- | [[Nort Port]] <ref name= “:1”> [[S2 E10|Kingdom #1]] </ref>, [[Liz Borger]] <ref name= “:1”> [[S2 E10|Kingdom #1]] </ref>,[[Jillian Murphy]] <ref name= “:2”> [[S2 E19|Kingdom #2]] </ref>, [[Leilah Amund]] <ref name= “:2”> [[S2 E19|Kingdom #2]] </ref> |} {{Cast}} [[Category:Cast]] 30361cf6728e2e27db7905f9fc4d34baaa6d5b4d 42 21 2024-01-03T18:11:57Z Laggardson 2 wikitext text/x-wiki '''William White''' is a cast member on ''Pest Control''. They also mix the audio for the show, and create original music alongside [[Jonas Newhouse]]. They are also in the band “glass beach”. == Characters == === Main Seasons === {| class="wikitable" |- ! style="background-color:#FDCE5E" |Season ! style="background-color:#FDCE5E" |Role(s) |- |[[Fate]] |[[Keeley Stewart]] |- | rowspan="5" |''[[Norfork]]'' |[[Kelly Aberdeen]] |- | [[Nort Port]] <ref name= “:1”> [[S2 E10|Kingdom #1]] </ref>, [[Liz Borger]] <ref name= “:1”> [[S2 E10|Kingdom #1]] </ref>,[[Jillian Murphy]] <ref name= “:2”> [[S2 E19|Kingdom #2]] </ref>, [[Leilah Amund]] <ref name= “:2”> [[S2 E19|Kingdom #2]] </ref> |} {{Cast}} [[Category:Cast]] a470384a2299de03c343ab86b79489ae432af078 Template:Infobox character 10 13 22 2024-01-03T04:28:59Z Laggardson 2 Created page with "<onlyinclude><infobox theme-source="color_theme"> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"> <caption source="caption"/> </image> <group> <header>Basic Information</header> <data source="pronouns"> <label>Pronouns</label> </data> <data source="titles"> <label>Titles</label> </data> <data source="aliases"> <label>Aliases</label> </data> <data source="place_of_or..." wikitext text/x-wiki <onlyinclude><infobox theme-source="color_theme"> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"> <caption source="caption"/> </image> <group> <header>Basic Information</header> <data source="pronouns"> <label>Pronouns</label> </data> <data source="titles"> <label>Titles</label> </data> <data source="aliases"> <label>Aliases</label> </data> <data source="place_of_origin"> <label>Place of Origin</label> </data> <data source="people"> <label>People</label> </data> </group> <group collapse="closed" layout="stacked"> <header>Connections</header> <data source="affiliations"> <label>Af&shy;fil&shy;i&shy;a&shy;tion(s)</label> </data> <data source="relations"> <label>Re&shy;la&shy;tion&shy;ships</label> </data> </group> <group> <header>Meta Info</header> <data source="season"> <label>Season</label> </data> <data source="game"> <label>Game</label> </data> <data source="playbook"> <label>Playbook</label> </data> <data source="player"> <label>Player</label> </data> <data source="appears_in"> <label>Appears In</label> </data> <data source="debut"> <label>Debut</label> </data> </group> </infobox><!-- -->{{#ifeq: {{NAMESPACENUMBER}} | 0 | {{#if: {{{color_theme|}}} || [[Category:Infoboxes with missing color theme]] }} | }}</onlyinclude> <noinclude> {{Documentation}} [[Category:Infoboxes]] {{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Characters]]}} </noinclude> 76f101f103d1d1ed76ef83cb05baf105ee609bf6 23 22 2024-01-03T04:29:57Z Laggardson 2 wikitext text/x-wiki <onlyinclude><infobox theme-source="color_theme"> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"> <caption source="caption"/> </image> <group> <header>Basic Information</header> <data source="pronouns"> <label>Pronouns</label> </data> <data source="titles"> <label>Titles</label> </data> <data source="aliases"> <label>Aliases</label> </data> <data source="place_of_origin"> <label>Place of Origin</label> </data> <data source="people"> <label>People</label> </data> </group> <group collapse="closed" layout="stacked"> <header>Connections</header> <data source="affiliations"> <label>Af&shy;fil&shy;i&shy;a&shy;tion(s)</label> </data> <data source="relations"> <label>Re&shy;la&shy;tion&shy;ships</label> </data> </group> <group> <header>Meta Info</header> <data source="season"> <label>Season</label> </data> <data source="game"> <label>Game</label> </data> <data source="playbook"> <label>Playbook</label> </data> <data source="player"> <label>Player</label> </data> <data source="appears_in"> <label>Appears In</label> </data> <data source="debut"> <label>Debut</label> </data> </group> </infobox><!-- -->{{#ifeq: {{NAMESPACENUMBER}} | 0 | {{#if: {{{color_theme|}}} || [[Category:Infoboxes with missing color theme]] }} | }}</onlyinclude> <noinclude> [[Category:Infoboxes]] {{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Characters]]}} </noinclude> 88c914dc1363764c9cd2d21f0c776392c1e0ed3e Module:Navbox 828 14 26 2024-01-03T14:07:54Z Laggardson 2 Created page with "-- -- This module implements {{Navbox}} -- local p = {} local navbar = require('Module:Navbar')._navbar local getArgs -- lazily initialized local args local border local listnums local ODD_EVEN_MARKER = '\127_ODDEVEN_\127' local RESTART_MARKER = '\127_ODDEVEN0_\127' local REGEX_MARKER = '\127_ODDEVEN(%d?)_\127' local function striped(wikitext) -- Return wikitext with markers replaced for odd/even striping. -- Child (subgroup) navboxes are flagged with a category th..." Scribunto text/plain -- -- This module implements {{Navbox}} -- local p = {} local navbar = require('Module:Navbar')._navbar local getArgs -- lazily initialized local args local border local listnums local ODD_EVEN_MARKER = '\127_ODDEVEN_\127' local RESTART_MARKER = '\127_ODDEVEN0_\127' local REGEX_MARKER = '\127_ODDEVEN(%d?)_\127' local function striped(wikitext) -- Return wikitext with markers replaced for odd/even striping. -- Child (subgroup) navboxes are flagged with a category that is removed -- by parent navboxes. The result is that the category shows all pages -- where a child navbox is not contained in a parent navbox. local orphanCat = '[[Category:Navbox orphans]]' if border == 'subgroup' and args.orphan ~= 'yes' then -- No change; striping occurs in outermost navbox. return wikitext .. orphanCat end local first, second = 'odd', 'even' if args.evenodd then if args.evenodd == 'swap' then first, second = second, first else first = args.evenodd second = first end end local changer if first == second then changer = first else local index = 0 changer = function (code) if code == '0' then -- Current occurrence is for a group before a nested table. -- Set it to first as a valid although pointless class. -- The next occurrence will be the first row after a title -- in a subgroup and will also be first. index = 0 return first end index = index + 1 return index % 2 == 1 and first or second end end local regex = orphanCat:gsub('([%[%]])', '%%%1') return (wikitext:gsub(regex, ''):gsub(REGEX_MARKER, changer)) -- () omits gsub count end local function processItem(item, nowrapitems) if item:sub(1, 2) == '{|' then -- Applying nowrap to lines in a table does not make sense. -- Add newlines to compensate for trim of x in |parm=x in a template. return '\n' .. item ..'\n' end if nowrapitems == 'yes' then local lines = {} for line in (item .. '\n'):gmatch('([^\n]*)\n') do local prefix, content = line:match('^([*:;#]+)%s*(.*)') if prefix and not content:match('^<span class="nowrap">') then line = prefix .. '<span class="nowrap">' .. content .. '</span>' end table.insert(lines, line) end item = table.concat(lines, '\n') end if item:match('^[*:;#]') then return '\n' .. item ..'\n' end return item end -- Separate function so that we can evaluate properly whether hlist should -- be added by the module local function has_navbar() return args.navbar ~= 'off' and args.navbar ~= 'plain' and not (not args.name and mw.getCurrentFrame():getParent():getTitle():gsub('/sandbox$', '') == 'Template:Navbox') end local function renderNavBar(titleCell) if has_navbar() then titleCell:wikitext(navbar{ args.name, -- we depend on this being mini = 1 when the navbox module decides -- to add hlist templatestyles. we also depend on navbar outputting -- a copy of the hlist templatestyles. mini = 1, fontstyle = (args.basestyle or '') .. ';' .. (args.titlestyle or '') .. ';background:none transparent;border:none;box-shadow:none; padding:0;' }) end end -- -- Title row -- local function renderTitleRow(tbl) if not args.title then return end local titleRow = tbl:tag('tr') if args.titlegroup then titleRow :tag('th') :attr('scope', 'row') :addClass('navbox-group') :addClass(args.titlegroupclass) :cssText(args.basestyle) :cssText(args.groupstyle) :cssText(args.titlegroupstyle) :wikitext(args.titlegroup) end local titleCell = titleRow:tag('th'):attr('scope', 'col') if args.titlegroup then titleCell :addClass('navbox-title1') end local titleColspan = 2 if args.imageleft then titleColspan = titleColspan + 1 end if args.image then titleColspan = titleColspan + 1 end if args.titlegroup then titleColspan = titleColspan - 1 end titleCell :cssText(args.basestyle) :cssText(args.titlestyle) :addClass('navbox-title') :attr('colspan', titleColspan) renderNavBar(titleCell) titleCell :tag('div') -- id for aria-labelledby attribute :attr('id', mw.uri.anchorEncode(args.title)) :addClass(args.titleclass) :css('font-size', '114%') :css('margin', '0 4em') :wikitext(processItem(args.title)) end -- -- Above/Below rows -- local function getAboveBelowColspan() local ret = 2 if args.imageleft then ret = ret + 1 end if args.image then ret = ret + 1 end return ret end local function renderAboveRow(tbl) if not args.above then return end tbl:tag('tr') :tag('td') :addClass('navbox-abovebelow') :addClass(args.aboveclass) :cssText(args.basestyle) :cssText(args.abovestyle) :attr('colspan', getAboveBelowColspan()) :tag('div') -- id for aria-labelledby attribute, if no title :attr('id', args.title and nil or mw.uri.anchorEncode(args.above)) :wikitext(processItem(args.above, args.nowrapitems)) end local function renderBelowRow(tbl) if not args.below then return end tbl:tag('tr') :tag('td') :addClass('navbox-abovebelow') :addClass(args.belowclass) :cssText(args.basestyle) :cssText(args.belowstyle) :attr('colspan', getAboveBelowColspan()) :tag('div') :wikitext(processItem(args.below, args.nowrapitems)) end -- -- List rows -- local function renderListRow(tbl, index, listnum) local row = tbl:tag('tr') if index == 1 and args.imageleft then row :tag('td') :addClass('navbox-image') :addClass(args.imageclass) :css('width', '1px') -- Minimize width :css('padding', '0px 2px 0px 0px') :cssText(args.imageleftstyle) :attr('rowspan', #listnums) :tag('div') :wikitext(processItem(args.imageleft)) end if args['group' .. listnum] then local groupCell = row:tag('th') -- id for aria-labelledby attribute, if lone group with no title or above if listnum == 1 and not (args.title or args.above or args.group2) then groupCell :attr('id', mw.uri.anchorEncode(args.group1)) end groupCell :attr('scope', 'row') :addClass('navbox-group') :addClass(args.groupclass) :cssText(args.basestyle) :css('width', args.groupwidth or '1%') -- If groupwidth not specified, minimize width groupCell :cssText(args.groupstyle) :cssText(args['group' .. listnum .. 'style']) :wikitext(args['group' .. listnum]) end local listCell = row:tag('td') if args['group' .. listnum] then listCell :addClass('navbox-list1') else listCell:attr('colspan', 2) end if not args.groupwidth then listCell:css('width', '100%') end local rowstyle -- usually nil so cssText(rowstyle) usually adds nothing if index % 2 == 1 then rowstyle = args.oddstyle else rowstyle = args.evenstyle end local listText = args['list' .. listnum] local oddEven = ODD_EVEN_MARKER if listText:sub(1, 12) == '</div><table' then -- Assume list text is for a subgroup navbox so no automatic striping for this row. oddEven = listText:find('<th[^>]*"navbox%-title"') and RESTART_MARKER or 'odd' end listCell :css('padding', '0px') :cssText(args.liststyle) :cssText(rowstyle) :cssText(args['list' .. listnum .. 'style']) :addClass('navbox-list') :addClass('navbox-' .. oddEven) :addClass(args.listclass) :addClass(args['list' .. listnum .. 'class']) :tag('div') :css('padding', (index == 1 and args.list1padding) or args.listpadding or '0em 0.25em') :wikitext(processItem(listText, args.nowrapitems)) if index == 1 and args.image then row :tag('td') :addClass('navbox-image') :addClass(args.imageclass) :css('width', '1px') -- Minimize width :css('padding', '0px 0px 0px 2px') :cssText(args.imagestyle) :attr('rowspan', #listnums) :tag('div') :wikitext(processItem(args.image)) end end -- -- Tracking categories -- local function needsHorizontalLists() if border == 'subgroup' or args.tracking == 'no' then return false end local listClasses = { ['plainlist'] = true, ['hlist'] = true, ['hlist hnum'] = true, ['hlist hwrap'] = true, ['hlist vcard'] = true, ['vcard hlist'] = true, ['hlist vevent'] = true, } return not (listClasses[args.listclass] or listClasses[args.bodyclass]) end -- there are a lot of list classes in the wild, so we have a function to find -- them and add their TemplateStyles local function addListStyles() local frame = mw.getCurrentFrame() -- TODO?: Should maybe take a table of classes for e.g. hnum, hwrap as above -- I'm going to do the stupid thing first though -- Also not sure hnum and hwrap are going to live in the same TemplateStyles -- as hlist local function _addListStyles(htmlclass, templatestyles) local class_args = { -- rough order of probability of use 'bodyclass', 'listclass', 'aboveclass', 'belowclass', 'titleclass', 'navboxclass', 'groupclass', 'titlegroupclass', 'imageclass' } local patterns = { '^' .. htmlclass .. '$', '%s' .. htmlclass .. '$', '^' .. htmlclass .. '%s', '%s' .. htmlclass .. '%s' } local found = false for _, arg in ipairs(class_args) do for _, pattern in ipairs(patterns) do if mw.ustring.find(args[arg] or '', pattern) then found = true break end end if found then break end end if found then return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles } } else return '' end end local hlist_styles = '' -- navbar always has mini = 1, so here (on this wiki) we can assume that -- we don't need to output hlist styles in navbox again. if not has_navbar() then hlist_styles = _addListStyles('hlist', 'Flatlist/styles.css') end local plainlist_styles = _addListStyles('plainlist', 'Plainlist/styles.css') return hlist_styles .. plainlist_styles end local function hasBackgroundColors() for _, key in ipairs({'titlestyle', 'groupstyle', 'basestyle', 'abovestyle', 'belowstyle'}) do if tostring(args[key]):find('background', 1, true) then return true end end end local function hasBorders() for _, key in ipairs({'groupstyle', 'basestyle', 'abovestyle', 'belowstyle'}) do if tostring(args[key]):find('border', 1, true) then return true end end end local function isIllegible() -- require('Module:Color contrast') absent on mediawiki.org return false end local function getTrackingCategories() local cats = {} if needsHorizontalLists() then table.insert(cats, 'Navigational boxes without horizontal lists') end if hasBackgroundColors() then table.insert(cats, 'Navboxes using background colours') end if isIllegible() then table.insert(cats, 'Potentially illegible navboxes') end if hasBorders() then table.insert(cats, 'Navboxes using borders') end return cats end local function renderTrackingCategories(builder) local title = mw.title.getCurrentTitle() if title.namespace ~= 10 then return end -- not in template space local subpage = title.subpageText if subpage == 'doc' or subpage == 'sandbox' or subpage == 'testcases' then return end for _, cat in ipairs(getTrackingCategories()) do builder:wikitext('[[Category:' .. cat .. ']]') end end -- -- Main navbox tables -- local function renderMainTable() local tbl = mw.html.create('table') :addClass('nowraplinks') :addClass(args.bodyclass) if args.title and (args.state ~= 'plain' and args.state ~= 'off') then if args.state == 'collapsed' then args.state = 'mw-collapsed' end tbl :addClass('mw-collapsible') :addClass(args.state or 'autocollapse') end tbl:css('border-spacing', 0) if border == 'subgroup' or border == 'none' then tbl :addClass('navbox-subgroup') :cssText(args.bodystyle) :cssText(args.style) else -- regular navbox - bodystyle and style will be applied to the wrapper table tbl :addClass('navbox-inner') :css('background', 'transparent') :css('color', 'inherit') end tbl:cssText(args.innerstyle) renderTitleRow(tbl) renderAboveRow(tbl) for i, listnum in ipairs(listnums) do renderListRow(tbl, i, listnum) end renderBelowRow(tbl) return tbl end function p._navbox(navboxArgs) args = navboxArgs listnums = {} for k, _ in pairs(args) do if type(k) == 'string' then local listnum = k:match('^list(%d+)$') if listnum then table.insert(listnums, tonumber(listnum)) end end end table.sort(listnums) border = mw.text.trim(args.border or args[1] or '') if border == 'child' then border = 'subgroup' end -- render the main body of the navbox local tbl = renderMainTable() -- get templatestyles local frame = mw.getCurrentFrame() local base_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Navbox/styles.css' } } local templatestyles = '' if args.templatestyles and args.templatestyles ~= '' then templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args.templatestyles } } end local res = mw.html.create() -- 'navbox-styles' exists for two reasons: -- 1. To wrap the styles to work around phab: T200206 more elegantly. Instead -- of combinatorial rules, this ends up being linear number of CSS rules. -- 2. To allow MobileFrontend to rip the styles out with 'nomobile' such that -- they are not dumped into the mobile view. res:tag('div') :addClass('navbox-styles') :addClass('nomobile') :wikitext(base_templatestyles .. templatestyles) :done() -- render the appropriate wrapper around the navbox, depending on the border param if border == 'none' then local nav = res:tag('div') :attr('role', 'navigation') :wikitext(addListStyles()) :node(tbl) -- aria-labelledby title, otherwise above, otherwise lone group if args.title or args.above or (args.group1 and not args.group2) then nav:attr('aria-labelledby', mw.uri.anchorEncode(args.title or args.above or args.group1)) else nav:attr('aria-label', 'Navbox') end elseif border == 'subgroup' then -- We assume that this navbox is being rendered in a list cell of a -- parent navbox, and is therefore inside a div with padding:0em 0.25em. -- We start with a </div> to avoid the padding being applied, and at the -- end add a <div> to balance out the parent's </div> res :wikitext('</div>') :wikitext(addListStyles()) :node(tbl) :wikitext('<div>') else local nav = res:tag('div') :attr('role', 'navigation') :addClass('navbox') :addClass(args.navboxclass) :cssText(args.bodystyle) :cssText(args.style) :css('padding', '3px') :wikitext(addListStyles()) :node(tbl) -- aria-labelledby title, otherwise above, otherwise lone group if args.title or args.above or (args.group1 and not args.group2) then nav:attr('aria-labelledby', mw.uri.anchorEncode(args.title or args.above or args.group1)) else nav:attr('aria-label', 'Navbox') end end if (args.nocat or 'false'):lower() == 'false' then renderTrackingCategories(res) end return striped(tostring(res)) end function p.navbox(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end args = getArgs(frame, {wrappers = {'Template:Navbox', 'Template:Navbox subgroup'}}) if frame.args.border then -- This allows Template:Navbox_subgroup to use {{#invoke:Navbox|navbox|border=...}}. args.border = frame.args.border end -- Read the arguments in the order they'll be output in, to make references number in the right order. local _ _ = args.title _ = args.above for i = 1, 20 do _ = args["group" .. tostring(i)] _ = args["list" .. tostring(i)] end _ = args.below return p._navbox(args) end return p c0c6a393f9e4e6bc23da95a76f9023013170e3c9 Module:Navbox/style.css 828 15 27 2024-01-03T14:09:44Z Laggardson 2 Created page with ".navbox { border: 1px solid #aaa; box-sizing: border-box; width: 100%; margin: auto; clear: both; font-size: 88%; text-align: center; padding: 1px; } .navbox-inner, .navbox-subgroup { width: 100%; } .navbox + .navbox-styles + .navbox { /* Single pixel border between adjacent navboxes */ margin-top: -1px; } .navbox th, .navbox-title, .navbox-abovebelow { text-align: center; /* Title and above/below styles */ padding-left: 1em; padding-right: 1em; } th.n..." sanitized-css text/css .navbox { border: 1px solid #aaa; box-sizing: border-box; width: 100%; margin: auto; clear: both; font-size: 88%; text-align: center; padding: 1px; } .navbox-inner, .navbox-subgroup { width: 100%; } .navbox + .navbox-styles + .navbox { /* Single pixel border between adjacent navboxes */ margin-top: -1px; } .navbox th, .navbox-title, .navbox-abovebelow { text-align: center; /* Title and above/below styles */ padding-left: 1em; padding-right: 1em; } th.navbox-group { /* Group style */ white-space: nowrap; /* @noflip */ text-align: right; } .navbox, .navbox-subgroup { background: #fdfdfd; } .navbox-list { /* Must match background color */ border-color: #fdfdfd; } .navbox th, .navbox-title { /* Level 1 color */ background: #eaeeff; } .navbox-abovebelow, th.navbox-group, .navbox-subgroup .navbox-title { /* Level 2 color */ background: #ddddff; } .navbox-subgroup .navbox-group, .navbox-subgroup .navbox-abovebelow { /* Level 3 color */ background: #e6e6ff; } .navbox-even { /* Even row striping */ background: #f7f7f7; } .navbox-odd { /* Odd row striping */ background: transparent; } th.navbox-title1 { border-left: 2px solid #fdfdfd; width: 100%; } td.navbox-list1 { text-align: left; border-left-width: 2px; border-left-style: solid; } .navbox .hlist td dl, .navbox .hlist td ol, .navbox .hlist td ul, .navbox td.hlist dl, .navbox td.hlist ol, .navbox td.hlist ul { /* Adjust hlist padding in navboxes */ padding: 0.125em 0; } .navbox .hlist dd, .navbox .hlist dt, .navbox .hlist li { /* Nowrap list items in navboxes */ white-space: nowrap; } .navbox .hlist dd dl, .navbox .hlist dt dl, .navbox .hlist li ol, .navbox .hlist li ul { /* But allow parent list items to be wrapped */ white-space: normal; } ol + .navbox-styles + .navbox, ul + .navbox-styles + .navbox { /* Prevent lists from clinging to navboxes */ margin-top: 0.5em; } c4c305dae15bacc8c3240430775fab74f0c10e06 Template:ContentFlex/style.css 10 16 28 2024-01-03T14:18:18Z Laggardson 2 Created page with ".content-flex-parent { display: flex; align-items: stretch; align-content: center; } .content-flex-children-grow > * { flex-grow: 1; }" sanitized-css text/css .content-flex-parent { display: flex; align-items: stretch; align-content: center; } .content-flex-children-grow > * { flex-grow: 1; } c09d98931ad1b4a5311b59f5099208fe2e8b25ff Kelly Aberdeen 0 17 29 2024-01-03T14:28:11Z Laggardson 2 Created page with "{{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = Norfork |player = [[William White]] |image1 = |season = ''[[Norfork]]’’ |pronouns = he/him |caption1 = }} == Appearance == == Personality == == Background == == Abilities == ==Gallery== == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] [[Category:]] [[Category:]] [[Category:]]" wikitext text/x-wiki {{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = Norfork |player = [[William White]] |image1 = |season = ''[[Norfork]]’’ |pronouns = he/him |caption1 = }} == Appearance == == Personality == == Background == == Abilities == ==Gallery== == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] [[Category:]] [[Category:]] [[Category:]] 7a69e70b0fae6a651f44f1677bf26d0f0203f3dd 35 29 2024-01-03T16:39:54Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = Norfork |player = [[William White]] |image1 = |aliases = The Cryptid |season = ''[[Norfork]]’’ |pronouns = he/him |caption1 = }} == Appearance == == Personality == == Background == == Abilities == ==Gallery== == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] [[Category:]] [[Category:]] [[Category:]] b9fcff7120b3cfc0c64708f06e8152df34d82fbd 36 35 2024-01-03T16:40:35Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = Norfork |player = [[William White]] |image1 = |aliases = The Cryptid |season = ''[[Norfork]] '' |pronouns = he/him |caption1 = }} == Appearance == == Personality == == Background == == Abilities == ==Gallery== == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] [[Category:]] [[Category:]] [[Category:]] c7231edaca75b67cfd8cbe34f23a04ede6ebbbe2 37 36 2024-01-03T16:47:25Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = Norfork |player = [[William White]] |image1 = |aliases = The Cryptid |season = ''[[Norfork]] '' |pronouns = he/him |caption1 = test of caption }} == Appearance == == Personality == == Background == == Abilities == ==Gallery== == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] [[Category:]] [[Category:]] [[Category:]] 2a13691821bf142efe7658a211111f260bb3d627 38 37 2024-01-03T17:21:44Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = [[Norfork (City)|Norfork]] |player = [[William White]] |image1 = |aliases = The Cryptid |season = ''[[Norfork]]'' |pronouns = he/him |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} == Appearance == == Personality == == Background == == Abilities == ==Gallery== == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] [[Category:]] [[Category:]] [[Category:]] 0deb936efd914a33f6710397a2f5354bc053b276 Template:Infobox Character 10 18 34 2024-01-03T16:38:21Z Laggardson 2 Created page with "<onlyinclude><infobox theme-source="color_theme"> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"> <caption source="caption"/> </image> <group> <header>Basic Information</header> <data source="pronouns"> <label>Pronouns</label> </data> <data source="titles"> <label>Titles</label> </data> <data source="aliases"> <label>Aliases</label> </data> <data source="place_of_or..." wikitext text/x-wiki <onlyinclude><infobox theme-source="color_theme"> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"> <caption source="caption"/> </image> <group> <header>Basic Information</header> <data source="pronouns"> <label>Pronouns</label> </data> <data source="titles"> <label>Titles</label> </data> <data source="aliases"> <label>Aliases</label> </data> <data source="place_of_origin"> <label>Place of Origin</label> </data> <data source="people"> <label>People</label> </data> </group> <group collapse="closed" layout="stacked"> <header>Connections</header> <data source="affiliations"> <label>Af&shy;fil&shy;i&shy;a&shy;tion(s)</label> </data> <data source="relations"> <label>Re&shy;la&shy;tion&shy;ships</label> </data> </group> <group> <header>Meta Info</header> <data source="season"> <label>Season</label> </data> <data source="game"> <label>Game</label> </data> <data source="playbook"> <label>Playbook</label> </data> <data source="player"> <label>Player</label> </data> <data source="appears_in"> <label>Appears In</label> </data> <data source="debut"> <label>Debut</label> </data> </group> </infobox><!-- -->{{#ifeq: {{NAMESPACENUMBER}} | 0 | {{#if: {{{color_theme|}}} || [[Category:Infoboxes with missing color theme]] }} | }}</onlyinclude> <noinclude> {{Documentation}} [[Category:Infoboxes]] {{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Characters]]}} </noinclude> 76f101f103d1d1ed76ef83cb05baf105ee609bf6 Template:Home season list item 10 19 40 2024-01-03T18:00:01Z Laggardson 2 Created page with "<onlyinclude><templatestyles src="Home season list item/styles.css"/><div class="home-season-list-item">{{#if: {{{ filename| }}} | [[File: {{{filename}}} |200px|link={{{imagepage}}}]] | <div style="height:200px;width:200px; background-color:#ccc; display:flex; align-items:center; justify-content:center; font-size:18pt; color:#666">TBA</div> }} <p> {{{text}}} </p></div></onlyinclude> <noinclude> Usage example {{Home season list item |filename= |link= Sangfielle (setting..." wikitext text/x-wiki <onlyinclude><templatestyles src="Home season list item/styles.css"/><div class="home-season-list-item">{{#if: {{{ filename| }}} | [[File: {{{filename}}} |200px|link={{{imagepage}}}]] | <div style="height:200px;width:200px; background-color:#ccc; display:flex; align-items:center; justify-content:center; font-size:18pt; color:#666">TBA</div> }} <p> {{{text}}} </p></div></onlyinclude> <noinclude> Usage example {{Home season list item |filename= |link= Sangfielle (setting) |text= [[Sangfielle]] }} <pre> {{Home season list item |filename= |link= Sangfielle (setting) |text= [[Sangfielle]] }} </pre> </noinclude> 4c2f2a1ba452adea6dc7f24e262c3c072532732f Template:Home season list item/styles.css 10 20 41 2024-01-03T18:00:22Z Laggardson 2 Created page with ".home-season-list-item { margin:0.5em; } .home-season-list-item img { object-fit:cover; width:200px; height:200px; }" sanitized-css text/css .home-season-list-item { margin:0.5em; } .home-season-list-item img { object-fit:cover; width:200px; height:200px; } 76656f59ff18fa3c0a98b203332fce8530df170f Jonas Newhouse 0 21 43 2024-01-03T18:12:37Z Laggardson 2 Created page with "'''Jonas Newhouse''' is a cast member on ''Pest Control''. They also mix the audio for the show, and create original music alongside [[William White]]. They are also in the band “glass beach”." wikitext text/x-wiki '''Jonas Newhouse''' is a cast member on ''Pest Control''. They also mix the audio for the show, and create original music alongside [[William White]]. They are also in the band “glass beach”. d80412ebe89b2d2375226cb7b76cba5cd6f68a11 44 43 2024-01-03T19:14:09Z Laggardson 2 wikitext text/x-wiki '''Jonas Newhouse''' is a cast member on ''Pest Control''. They also mix the audio for the show, and create original music alongside [[William White]]. They are also in the band “glass beach”. == Characters == === Main Seasons === {| class="wikitable" |- ! style="background-color:#FDCE5E" |Season ! style="background-color:#FDCE5E" |Role(s) |- |''[[Fate]]'' |[[Henrietta Salm]] |- | rowspan="5" |''[[Norfork]]'' |[[Rabbit Moon]] |- | [[Al Adams]] <ref name= “:1”> [[S2 E10|Kingdom #1]] </ref>, [[Siobhan Clement]] <ref name= “:1”> [[S2 E10|Kingdom #1]] </ref>,[[Rober Maricelli]] <ref name= “:2”> [[S2 E19|Kingdom #2]] </ref>, [[Perry Commonlaw]] <ref name= “:2”> [[S2 E19|Kingdom #2]] </ref> |} {{Cast}} [[Category:Cast]] 4da7bbd5e1448f82fd87161c9119e482fd44f2de Category:Fate characters 14 22 45 2024-01-03T19:18:33Z Laggardson 2 Created page with "[[Category:Fate characters]]" wikitext text/x-wiki [[Category:Fate characters]] 190bd05948b123ebda0ba7949210a3343802b5a5 Norfork 0 23 46 2024-01-03T19:21:12Z Laggardson 2 Created page with "{{Infobox season |color_theme=FF0000 |title=Season 1: Fate |image=[[]] |caption=Cover art by [https://twitter.com/shoddyrobot Craig Sheldon] |episodes=15 |release=March 24, 2019 - December 3, 2019 }} '''''Norfork''''' is the second season of ''Pest Control''. It primarily uses the ''[[Monster of the Week]]'' system, while also making forays into other games. The first episode was released on October 30th, 2022. It follows a group of found-family monster Hunters as they..." wikitext text/x-wiki {{Infobox season |color_theme=FF0000 |title=Season 1: Fate |image=[[]] |caption=Cover art by [https://twitter.com/shoddyrobot Craig Sheldon] |episodes=15 |release=March 24, 2019 - December 3, 2019 }} '''''Norfork''''' is the second season of ''Pest Control''. It primarily uses the ''[[Monster of the Week]]'' system, while also making forays into other games. The first episode was released on October 30th, 2022. It follows a group of found-family monster Hunters as they set off on a journey across the United States, 184664245ab8b1d8d67313a24ab437a19be948f9 47 46 2024-01-03T19:28:28Z Laggardson 2 wikitext text/x-wiki {{Infobox season |color_theme=FF0000 |title=Season 2: Norfork |image=[[]] |caption=Cover art by [https://twitter.com/shoddyrobot Craig Sheldon] |episodes=27 |release=October 30, 2022 - present }} '''''Norfork''''' is the second season of ''Pest Control''. It primarily uses the ''[[Monster of the Week]]'' system, while also making forays into other games. The first episode was released on October 30th, 2022. It follows a group of found-family monster Hunters as they set off on a journey across the United States, c86b9ea3dd438a26b026523c6b1ffe62c14523e1 48 47 2024-01-03T19:33:04Z Laggardson 2 wikitext text/x-wiki {{Infobox season |color_theme=FF0000 |title=Season 2: Norfork |image=[[]] |caption=Cover art by [https://twitter.com/shoddyrobot Craig Sheldon] |episodes=27 |release=October 30, 2022 - present }} '''''Norfork''''' is the second season of ''Pest Control''. It primarily uses the ''[[Monster of the Week]]'' system, while also making forays into other games. The first episode was released on October 30th, 2022. It follows a trio of friends living in the edge-city of Norfork as it adapts to the open presence of [[Myriad|Myriads]] and the encroachment of [[The City]]. 069f40b58fe56cf5590dad13db0c796c26f15012 49 48 2024-01-03T19:35:23Z Laggardson 2 wikitext text/x-wiki ''(For the town itself, see ''[[Norfork (location)|Norfork]]'')'' {{Infobox season |color_theme=FF0000 |title=Season 2: Norfork |image=[[]] |caption=Cover art by [https://twitter.com/shoddyrobot Craig Sheldon] |episodes=27 |release=October 30, 2022 - present }} '''''Norfork''''' is the second season of ''Pest Control''. It primarily uses the ''[[Monster of the Week]]'' system, while also making forays into other games. The first episode was released on October 30th, 2022. It follows a trio of friends living in the edge-city of Norfork as it adapts to the open presence of [[Myriad|Myriads]] and the encroachment of [[The City]]. b4a87e7fbdb750ed6a53f7ba482ec52264ca6ea4 50 49 2024-01-03T19:35:37Z Laggardson 2 wikitext text/x-wiki ''(For the town itself, see ''[[Norfork (location)|Norfork]]'')'' {{Infobox season |color_theme=FF0000 |title=Season 2: Norfork |image=[[]] |caption=Cover art by [https://twitter.com/shoddyrobot Craig Sheldon] |episodes=27 |release=October 30, 2022 - present }} '''''Norfork''''' is the second season of ''Pest Control''. It primarily uses the ''[[Monster of the Week]]'' system, while also making forays into other games. The first episode was released on October 30th, 2022. It follows a trio of friends living in the edge-city of Norfork as it adapts to the open presence of [[Myriad|Myriads]] and the encroachment of [[The City]]. fe91e0c799abdd8535a589d8a2ecdee219583f38 Sam Darr 0 24 51 2024-01-03T19:37:36Z Laggardson 2 Created page with "'''Sam Darr''' is a cast member on ''Pest Control''. She is responsible for the pixel-art images of the characters, as well as the show’s social media." wikitext text/x-wiki '''Sam Darr''' is a cast member on ''Pest Control''. She is responsible for the pixel-art images of the characters, as well as the show’s social media. e37b4ea26ce04846b51edd901633c2a366496c45 52 51 2024-01-03T19:41:38Z Laggardson 2 wikitext text/x-wiki '''Sam Darr''' is a cast member on ''Pest Control''. She is responsible for the pixel-art images of the characters, as well as the show’s social media. == Characters == === Main Seasons === {| class="wikitable" |- ! style="background-color:#FDCE5E" |Season ! style="background-color:#FDCE5E" |Role(s) |- |''[[Fate]]'' |[[Maggie Thornback]] |- | rowspan="5" |''[[Norfork]]'' |[[Nammi]] |- | [[Berg Bergson]] <ref name= “:1”> [[S2 E10|Kingdom #1]] </ref>, [[Becca Cairn]] <ref name= “:1”> [[S2 E10|Kingdom #1]] </ref>,[[Tammana Henming]] <ref name= “:2”> [[S2 E19|Kingdom #2]] </ref>, [[Valentina]] <ref name= “:2”> [[S2 E19|Kingdom #2]] </ref> |} {{Cast}} [[Category:Cast]] 433a65793b29aabce65a7384d4d1ef8b96b144be Template:Reflist 10 25 53 2024-01-03T19:46:01Z Laggardson 2 Created page with "<div class="reflist <!-- -->{{#if: {{{1|}}} | columns {{#iferror: {{#ifexpr: {{{1|1}}} > 1 }} | references-column-width | references-column-count references-column-count-{{#if:1|{{{1}}}}} }} | {{#if: {{{colwidth|}}} | references-column-width }} }}" style="<!-- -->{{#if: {{{1|}}} | {{#iferror: {{#ifexpr: {{{1|1}}} > 1 }} | {{column-width|{{#if:1|{{{1}}}}}}} | {{column-count|{{#if:1|{{{1}}}}}}} }} | {{#if: {{{colwidth|}}}..." wikitext text/x-wiki <div class="reflist <!-- -->{{#if: {{{1|}}} | columns {{#iferror: {{#ifexpr: {{{1|1}}} > 1 }} | references-column-width | references-column-count references-column-count-{{#if:1|{{{1}}}}} }} | {{#if: {{{colwidth|}}} | references-column-width }} }}" style="<!-- -->{{#if: {{{1|}}} | {{#iferror: {{#ifexpr: {{{1|1}}} > 1 }} | {{column-width|{{#if:1|{{{1}}}}}}} | {{column-count|{{#if:1|{{{1}}}}}}} }} | {{#if: {{{colwidth|}}} | {{column-width|{{{colwidth}}}}} }} }} list-style-type: <!-- -->{{{liststyle|{{#switch: {{{group|}}} | upper-alpha | upper-roman | lower-alpha | lower-greek | lower-roman = {{{group}}} | #default = decimal}}}}};"> {{#tag:references|{{{refs|}}}|group={{{group|}}}}}</div><noinclude> {{documentation}}[[Category:Citation templates]]</noinclude> 9e8c0db25b20a0310b3f561935f7068980b0e861 Kelly Aberdeen 0 17 54 38 2024-01-03T19:50:12Z Laggardson 2 /* Abilities */ wikitext text/x-wiki {{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = [[Norfork (City)|Norfork]] |player = [[William White]] |image1 = |aliases = The Cryptid |season = ''[[Norfork]]'' |pronouns = he/him |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} == Appearance == == Personality == == Background == == Abilities == === Advancements === +1 Sharp (episode) Precise Strike. When you inflict harm on a monster, you can aim for a weak spot. Roll +Tough. On a 10+ you inflict +2 harm. On a 7-9 you inflict +1 harm.On a miss, you leave yourself open to the monster. ==Gallery== == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] [[Category:]] [[Category:]] [[Category:]] 4c44c239f47122bfa1104a4e54bde060ee96a2e9 58 54 2024-01-03T20:22:52Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = [[Norfork (City)|Norfork]] |player = [[William White]] |image1 = Kelly_Aberdeen.png |aliases = The Cryptid |season = ''[[Norfork]]'' |pronouns = he/him |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} == Appearance == == Personality == == Background == == Abilities == === Advancements === +1 Sharp (episode) Precise Strike. When you inflict harm on a monster, you can aim for a weak spot. Roll +Tough. On a 10+ you inflict +2 harm. On a 7-9 you inflict +1 harm.On a miss, you leave yourself open to the monster. ==Gallery== == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] [[Category:]] [[Category:]] [[Category:]] a5313eeafafecf7f3b60dcbbef4d40600c1bda6e 60 58 2024-01-03T20:25:11Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = [[Norfork (City)|Norfork]] |player = [[William White]] |image1 = Rabbit_Moon.png |aliases = The Cryptid |season = ''[[Norfork]]'' |pronouns = he/him |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} == Appearance == == Personality == == Background == == Abilities == === Advancements === +1 Sharp (episode) Precise Strike. When you inflict harm on a monster, you can aim for a weak spot. Roll +Tough. On a 10+ you inflict +2 harm. On a 7-9 you inflict +1 harm.On a miss, you leave yourself open to the monster. ==Gallery== == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] [[Category:]] [[Category:]] [[Category:]] b3d1950958d1b2b27592b9e8c78cc3029ceff4fa 61 60 2024-01-03T20:40:15Z Laggardson 2 /* Abilities */ wikitext text/x-wiki {{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = [[Norfork (City)|Norfork]] |player = [[William White]] |image1 = Rabbit_Moon.png |aliases = The Cryptid |season = ''[[Norfork]]'' |pronouns = he/him |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} == Appearance == == Personality == == Background == == Abilities == '''Burglar'''. When you break into a secure location, roll +Sharp. On a 10+ pick three, on a 7-9 pick two: you get in undetected, you get out undetected, you don’t leave a mess, you find what you were after. '''Deal with the Devil''': You sold your soul to the Devil. Pick one or two things you got out of the deal: wealth, fame, youth, sensual gratification, skill (add +1 to two ratings). Payment is due either when you die, in six months (if you picked two things) or otherwise in a year. '''Guardian''': You have a mystical ally (perhaps a spirit, alien, or cryptid) who helps and defends you. Define them, and their powers, with the Keeper’s agreement. Their look is one of: invisible, an intangible spirit thing, a weird creature, disguised as an animal, or disguised as a person. === Advancements === '''+1 Sharp''' (episode) '''Precise Strike'''. When you inflict harm on a monster, you can aim for a weak spot. Roll +Tough. On a 10+ you inflict +2 harm. On a 7-9 you inflict +1 harm.On a miss, you leave yourself open to the monster. (episode) '''Devastating'''. When you inflict harm, you may inflict +1 harm. (Ep17) '''Crew'''. You have a regular crew, a team of three or four people who will help you out with pretty much anything. They count as a team. (Ep20) ==Gallery== == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] [[Category:]] [[Category:]] [[Category:]] 6b49508627f031395b5aecaca138b3a8f4448b9a 62 61 2024-01-03T20:41:54Z Laggardson 2 /* Gallery */ wikitext text/x-wiki {{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = [[Norfork (City)|Norfork]] |player = [[William White]] |image1 = Rabbit_Moon.png |aliases = The Cryptid |season = ''[[Norfork]]'' |pronouns = he/him |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} == Appearance == == Personality == == Background == == Abilities == '''Burglar'''. When you break into a secure location, roll +Sharp. On a 10+ pick three, on a 7-9 pick two: you get in undetected, you get out undetected, you don’t leave a mess, you find what you were after. '''Deal with the Devil''': You sold your soul to the Devil. Pick one or two things you got out of the deal: wealth, fame, youth, sensual gratification, skill (add +1 to two ratings). Payment is due either when you die, in six months (if you picked two things) or otherwise in a year. '''Guardian''': You have a mystical ally (perhaps a spirit, alien, or cryptid) who helps and defends you. Define them, and their powers, with the Keeper’s agreement. Their look is one of: invisible, an intangible spirit thing, a weird creature, disguised as an animal, or disguised as a person. === Advancements === '''+1 Sharp''' (episode) '''Precise Strike'''. When you inflict harm on a monster, you can aim for a weak spot. Roll +Tough. On a 10+ you inflict +2 harm. On a 7-9 you inflict +1 harm.On a miss, you leave yourself open to the monster. (episode) '''Devastating'''. When you inflict harm, you may inflict +1 harm. (Ep17) '''Crew'''. You have a regular crew, a team of three or four people who will help you out with pretty much anything. They count as a team. (Ep20) ==Gallery== [[Kelly Aberdeen.png|Kelly Abrdeen.png]] == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] [[Category:]] [[Category:]] [[Category:]] f27c966fc4b6a637bd603d6735bcfec7363cdd6c 63 62 2024-01-03T20:42:19Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = [[Norfork (City)|Norfork]] |player = [[William White]] |image1 = Rabbit_Moon.png |aliases = The Cryptid |season = ''[[Norfork]]'' |pronouns = he/him |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} == Appearance == == Personality == == Background == == Abilities == '''Burglar'''. When you break into a secure location, roll +Sharp. On a 10+ pick three, on a 7-9 pick two: you get in undetected, you get out undetected, you don’t leave a mess, you find what you were after. '''Deal with the Devil''': You sold your soul to the Devil. Pick one or two things you got out of the deal: wealth, fame, youth, sensual gratification, skill (add +1 to two ratings). Payment is due either when you die, in six months (if you picked two things) or otherwise in a year. '''Guardian''': You have a mystical ally (perhaps a spirit, alien, or cryptid) who helps and defends you. Define them, and their powers, with the Keeper’s agreement. Their look is one of: invisible, an intangible spirit thing, a weird creature, disguised as an animal, or disguised as a person. === Advancements === '''+1 Sharp''' (episode) '''Precise Strike'''. When you inflict harm on a monster, you can aim for a weak spot. Roll +Tough. On a 10+ you inflict +2 harm. On a 7-9 you inflict +1 harm.On a miss, you leave yourself open to the monster. (episode) '''Devastating'''. When you inflict harm, you may inflict +1 harm. (Ep17) '''Crew'''. You have a regular crew, a team of three or four people who will help you out with pretty much anything. They count as a team. (Ep20) ==Gallery== [[Kelly_Aberdeen.png]] == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] [[Category:]] [[Category:]] [[Category:]] 278a7b2d2f51dc11d482180ba0115ce466a13a1a 64 63 2024-01-03T20:43:26Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = [[Norfork (City)|Norfork]] |player = [[William White]] |image1 = Rabbit_Moon.png |aliases = The Cryptid |season = ''[[Norfork]]'' |pronouns = he/him |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} == Appearance == == Personality == == Background == == Abilities == '''Burglar'''. When you break into a secure location, roll +Sharp. On a 10+ pick three, on a 7-9 pick two: you get in undetected, you get out undetected, you don’t leave a mess, you find what you were after. '''Deal with the Devil''': You sold your soul to the Devil. Pick one or two things you got out of the deal: wealth, fame, youth, sensual gratification, skill (add +1 to two ratings). Payment is due either when you die, in six months (if you picked two things) or otherwise in a year. '''Guardian''': You have a mystical ally (perhaps a spirit, alien, or cryptid) who helps and defends you. Define them, and their powers, with the Keeper’s agreement. Their look is one of: invisible, an intangible spirit thing, a weird creature, disguised as an animal, or disguised as a person. === Advancements === '''+1 Sharp''' (episode) '''Precise Strike'''. When you inflict harm on a monster, you can aim for a weak spot. Roll +Tough. On a 10+ you inflict +2 harm. On a 7-9 you inflict +1 harm.On a miss, you leave yourself open to the monster. (episode) '''Devastating'''. When you inflict harm, you may inflict +1 harm. (Ep17) '''Crew'''. You have a regular crew, a team of three or four people who will help you out with pretty much anything. They count as a team. (Ep20) ==Gallery== [[File:Kelly_Aberdeen.png|200px|thumb|left|Caption]] == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] [[Category:]] [[Category:]] [[Category:]] 6c11ecb0ca30c43ced7833ac8860ddda0233860d 65 64 2024-01-03T20:45:45Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = [[Norfork (City)|Norfork]] |player = [[William White]] |image1 = [[File:Kelly_Aberdeen.png]] |aliases = The Cryptid |season = ''[[Norfork]]'' |pronouns = he/him |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} == Appearance == == Personality == == Background == == Abilities == '''Burglar'''. When you break into a secure location, roll +Sharp. On a 10+ pick three, on a 7-9 pick two: you get in undetected, you get out undetected, you don’t leave a mess, you find what you were after. '''Deal with the Devil''': You sold your soul to the Devil. Pick one or two things you got out of the deal: wealth, fame, youth, sensual gratification, skill (add +1 to two ratings). Payment is due either when you die, in six months (if you picked two things) or otherwise in a year. '''Guardian''': You have a mystical ally (perhaps a spirit, alien, or cryptid) who helps and defends you. Define them, and their powers, with the Keeper’s agreement. Their look is one of: invisible, an intangible spirit thing, a weird creature, disguised as an animal, or disguised as a person. === Advancements === '''+1 Sharp''' (episode) '''Precise Strike'''. When you inflict harm on a monster, you can aim for a weak spot. Roll +Tough. On a 10+ you inflict +2 harm. On a 7-9 you inflict +1 harm.On a miss, you leave yourself open to the monster. (episode) '''Devastating'''. When you inflict harm, you may inflict +1 harm. (Ep17) '''Crew'''. You have a regular crew, a team of three or four people who will help you out with pretty much anything. They count as a team. (Ep20) ==Gallery== [[File:Kelly_Aberdeen.png|200px|thumb|left|Caption]] == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] [[Category:]] [[Category:]] [[Category:]] 8336c45164c50aa3ea11242e8bbd2366fa27f755 File:Norfork coverart.png 6 26 55 2024-01-03T20:18:16Z Laggardson 2 Main coverart for Season 2: Norfork wikitext text/x-wiki == Summary == Main coverart for Season 2: Norfork 6763e9dcb28ee1fed360a633b1f5cfc5af7bebf2 Main Page 0 1 56 6 2024-01-03T20:19:05Z Laggardson 2 wikitext text/x-wiki {{ColoredBox |title=Welcome! |background-title-color=#ff0000 |center-title=true |center-content=true |content= Welcome to Pest Control Wiki - a wiki for the actual-play podcast ''[[Pest Control]]''! <p><strong>Official Links</strong><br> [https://twitter.com/PestControlPod Twitter] • [https://cohost.org/pestcontrolpod Cohost] • [https://discord.gg/uv9bzF6RPY Discord] </p> <p><strong>Contribute to the Wiki</strong><br> <strong>{{NUMBEROFARTICLES}} PAGES</strong> • [[Main_Page|Getting Started]]</p> }} {{ColoredBox |title=Seasons |background-title-color=#ff0000 |center-title=true |content = {{ContentFlex |style=flex-wrap:wrap;justify-content:center;flex-grow:0 |content= {{Home season list item |filename= |imagepage= |text='''''[[Fate]]''''' }} {{Home season list item |filename= norfork_coverart.png |imagepage= |text='''''[[Norfork]]''''' }} }} |center-content=true }} }} {{ColoredBox |title = The Cast |background-title-color=#ff0000 |center-content=true|center-title=true |content = [[Sam Richardson]] • [[William White]] • [[Jonas Newhouse]] • [[Sam Darr]] }} __NOTOC__ == Welcome to {{SITENAME}}! == This Main Page was created automatically and it seems it hasn't been replaced yet. === For the bureaucrat(s) of this wiki === Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting. You can immediately start working on your wiki or whenever you want. Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links: * [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users) * [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]] * [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.) ==== I still don't understand X! ==== Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here: * [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]] * On [[phab:|Phabricator]] * On [https://miraheze.org/discord Discord] * On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat]) === For visitors of this wiki === Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later! 3690f76d6b22d71e54a2583888e5c8205efe2970 File:Kelly Aberdeen.png 6 27 57 2024-01-03T20:22:16Z Laggardson 2 Official character art for Kelly Aberdeen wikitext text/x-wiki == Summary == Official character art for Kelly Aberdeen 0a07ba0159b4870f53ec93c9ebc1074e9a28f23d File:Rabbit Moon.png 6 28 59 2024-01-03T20:24:20Z Laggardson 2 Official character art for Rabbit Moon. wikitext text/x-wiki == Summary == Official character art for Rabbit Moon. 8571e2252cae6e08b887bc2d210b8599c7c2f4aa Module:Episode list 828 29 66 2024-01-03T20:49:35Z Laggardson 2 Created page with "local p = {} -- This module requires the use of the following modules: local colorContrastModule = require('Module:Color contrast') local htmlColor = mw.loadData('Module:Color contrast/colors') local delinkModule = require('Module:Delink') local langModule = require("Module:Lang") local mathModule = require('Module:Math') local tableEmptyCellModule = require('Module:Table empty cell') local yesNoModule = require('Module:Yesno') -- mw.html object for the generated row...." Scribunto text/plain local p = {} -- This module requires the use of the following modules: local colorContrastModule = require('Module:Color contrast') local htmlColor = mw.loadData('Module:Color contrast/colors') local delinkModule = require('Module:Delink') local langModule = require("Module:Lang") local mathModule = require('Module:Math') local tableEmptyCellModule = require('Module:Table empty cell') local yesNoModule = require('Module:Yesno') -- mw.html object for the generated row. local row -- Variable that will decide the colspan= of the Short Summary cell. local nonNilParams = 0 -- Variable that will keep track if a TBA value was entered. local cellValueTBA = false -- Variable that handles the assigned tracking categories. local trackingCategories = "" -- List of tracking categories. local trackingCategoryList = { ["air_dates"] = "[[Category:Episode lists with unformatted air dates]]", ["alt_air_dates"] = "[[Category:Episode lists with incorrectly formatted alternate air dates]]", ["faulty_line_colors"] = "[[Category:Episode lists with faulty line colors]]", ["non_compliant_line_colors"] = "[[Category:Episode lists with non-compliant line colors]]", ["default_line_colors"] = "[[Category:Episode list using the default LineColor]]", ["row_deviations"] = "[[Category:Episode lists with row deviations]]", ["invalid_top_colors"] = "[[Category:Episode lists with invalid top colors]]", ["tba_values"] = "[[Category:Episode lists with TBA values]]", ["nonmatching_numbered_parameters"] = "[[Category:Episode lists with a non-matching set of numbered parameters]]", ["raw_unformatted_storyteleplay"] = "[[Category:Episode lists with unformatted story or teleplay credits]]" } -- List of parameter names in this order. local cellNameList = { 'Aux1', 'DirectedBy', 'WrittenBy', 'Aux2', 'Aux3', 'OriginalAirDate', 'AltDate', 'Guests', 'MusicalGuests', 'ProdCode', 'Viewers', 'Aux4' } -- List of pairs which cannot be used together local excludeList = { ['Guests'] = 'Aux1', ['MusicalGuests'] = 'Aux2' } -- List of cells that have parameter groups local parameterGroupCells = {} local firstParameterGroupCell -- List of title parameter names in this order. -- List used for multi title lists. local titleList = { 'Title', 'RTitle', 'AltTitle', 'RAltTitle', 'NativeTitle', 'TranslitTitle', } -- Local function which is used to retrieve the episode number or production code number, -- without any additional text. local function idTrim(val, search) local valFind = string.find(val, search) if (valFind == nil) then return val else return string.sub(val, 0, valFind-1) end end -- Local function which is used to validate that a parameter has an actual value. local function hasValue(param) if (param ~= nil and param ~= "") then return true else return false end end -- Local function which is used to create a table data cell. local function createTableData(text, rowSpan, textAlign) if (rowSpan ~= nil and tonumber(rowSpan) > 1) then row:tag('td') :attr('rowspan', rowSpan) :wikitext(text) else row:tag('td') :css('text-align', textAlign) :wikitext(text) end end -- Local function which is used to add a tracking category to the page. local function addTrackingCategory(category) trackingCategories = trackingCategories .. category end -- Local function which is used to create a Short Summary row. local function createShortSummaryRow(args, lineColor) -- fix for lists in the Short Summary local shortSummaryText = args.ShortSummary if (shortSummaryText:match('^[*:;#]') or shortSummaryText:match('^{|')) then shortSummaryText = '<span></span>\n' .. shortSummaryText end if (shortSummaryText:match('\n[*:;#]')) then shortSummaryText = shortSummaryText .. '\n<span></span>' end local shortSummaryCell = mw.html.create('td') :addClass('description') :css('border-bottom', 'solid 3px ' .. lineColor) :attr('colspan', nonNilParams) :newline() :wikitext(shortSummaryText) return mw.html.create('tr') :addClass('expand-child') :node(shortSummaryCell) end -- Local function which is used to add tracking categories for Top Color issues. local function addTopColorTrackingCategories(args) if (hasValue(args.TopColor)) then addTrackingCategory(trackingCategoryList["row_deviations"]) -- Track top colors that have a color contrast rating below AAA with -- respect to text color, link color, or visited link color. See -- [[WP:COLOR]] for more about color contrast requirements. local textContrastRatio = colorContrastModule._ratio{args.TopColor, 'black', ['error'] = 0} local linkContrastRatio = colorContrastModule._ratio{args.TopColor, '#0B0080', ['error'] = 0} local visitedLinkContrastRatio = colorContrastModule._ratio{args.TopColor, '#0645AD', ['error'] = 0} if (textContrastRatio < 7 or linkContrastRatio < 7 or visitedLinkContrastRatio < 7) then addTrackingCategory(trackingCategoryList["invalid_top_colors"]) end end end -- Local function which is used to add tracking categories for Line Color issues. local function addLineColorTrackingCategories(args) if (hasValue(args.LineColor)) then local blackContrastRatio = colorContrastModule._ratio{args.LineColor, 'black', ['error'] = 0} local whiteContrastRatio = colorContrastModule._ratio{'white', args.LineColor, ['error'] = 0} else addTrackingCategory(trackingCategoryList["default_line_colors"]) end end -- Local function which is used to remove wiki-links from repated information in rowspans. -- Used for Doctor Who serials, where the director and writer are the same for each part of serial. local function removeWikilinks(args, v) return delinkModule._delink{args[v]} end -- Local function which is used to set the text of an empty cell -- with either "TBD" or "N/A". -- Set to N/A if viewers haven't been available for four weeks, else set it as TBD. local function setTBDStatus(args) local month, day, year = args.OriginalAirDate:gsub("&nbsp;", " "):match("(%a+) (%d+), (%d+)") if (month == nil) then day, month, year = args.OriginalAirDate:gsub("&nbsp;", " "):match("(%d+) (%a+) (%d+)") end if (day == nil) then return tableEmptyCellModule._main({alt_text = "TBD"}) else -- List of months. local monthList = { ['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12 } if not monthList[month] then error('Invalid month ' .. month) end local seconds = os.time() - os.time({year = year, month = monthList[month], day = day, hour = 0, min = 0, sec = 0}) if (seconds >= 60 * 60 * 24 * 7 * 4) then return tableEmptyCellModule._main({alt_text = "N/A"}) else return tableEmptyCellModule._main({alt_text = "TBD"}) end end end -- Local function which is used to create an empty cell. local function createEmptyCell(args, v, unsetParameterGroup) if (unsetParameterGroup) then args[v] = tableEmptyCellModule._main({alt_text = "N/A"}) elseif (v == 'Viewers' and hasValue(args.OriginalAirDate)) then args[v] = setTBDStatus(args) else args[v] = tableEmptyCellModule._main({}) end end -- Air dates that don't use {{Start date}} local function checkUsageOfDateTemplates(args, v, onInitialPage, title) if (v == 'OriginalAirDate' and args[v] ~= '' and string.match(args[v], '%d%d%d%d') ~= nil and string.match(args[v], '2C2C2C') == nil and string.find(args[v], 'dtstart') == nil and onInitialPage and title.namespace == 0) then addTrackingCategory(trackingCategoryList["air_dates"]) end -- Alternate air dates that do use {{Start date}} if (v == 'AltDate' and args[v] ~= '' and string.find(args[v], 'dtstart') ~= nil and onInitialPage and title.namespace == 0) then addTrackingCategory(trackingCategoryList["alt_air_dates"]) end end -- Local function which is used to create a Production Code cell. local function createProductionCodeCell(args, v) if (hasValue(args.ProdCode) and string.find(args.ProdCode, 'TBA') == nil) then row:tag('td') :attr('id', 'pc' .. idTrim(idTrim(args.ProdCode, ' ----'), '<')) :css('text-align', 'center') :wikitext(args.ProdCode) elseif (args.ProdCode == '' or string.find(args.ProdCode or '', 'TBA') ~= nil) then createEmptyCell(args, v, false) createTableData(args.ProdCode, 1, "center") else -- ProductionCode parameter not used; Do nothing. end nonNilParams = nonNilParams + 1 end --[[ Local function which is used to extract data from the numbered serial parameters (Title1, Aux1, etc.), and then convert them to use the non-numbered parameter names (Title, Aux). The function returns the args as non-numbered prameter names. ]]-- local function extractDataFromNumberedSerialArgs(args, i, numberOfParameterGroups, title) for _, v in ipairs(cellNameList) do local parameter = v local numberedParameter = v .. "_" .. i local excludeParameter = excludeList[parameter] or 'NULL' .. parameter local excludeNumberParameter = (excludeList[numberedParameter] or 'NULL' .. parameter) .. "_" .. i if (not hasValue(args[numberedParameter]) and not hasValue(args[excludeNumberParameter]) and hasValue(parameterGroupCells[parameter]) and not hasValue(args[excludeParameter])) then if (v ~= 'ProdCode') then createEmptyCell(args, parameter, true) else args[parameter] = '' end if (title.namespace == 0) then addTrackingCategory(trackingCategoryList["nonmatching_numbered_parameters"]) end elseif (hasValue(args[numberedParameter]) and not hasValue(args[excludeNumberParameter])) then args[parameter] = args[numberedParameter] end end return args end --[[ Local function which is used to create column cells. EpisodeNumber, EpisodeNumber2 and Title are created in different functions as they require some various if checks. See: -- createEpisodeNumberCell() -- createEpisodeNumberCellSecondary() -- createTitleCell() ]]-- local function createCells(args, isSerial, currentRow, onInitialPage, title, numberOfParameterGroups) for k, v in ipairs(cellNameList) do if (v == 'ProdCode') then createProductionCodeCell(args, v) elseif (args[v]) then -- Set empty cells to TBA/TBD if (args[v] == '') then createEmptyCell(args, v, false) elseif (v == 'WrittenBy' and title.namespace == 0) then if ((string.find(args[v], "''Story") ~= nil or string.find(args[v], "''Teleplay") ~= nil) and string.find(args[v], "8202") == nil) then -- &#8202; is the hairspace added through {{StoryTeleplay}} addTrackingCategory(trackingCategoryList["raw_unformatted_storyteleplay"]) end end -- If serial titles need to be centered and not left, then this should be removed. local textAlign = "center" if (v == 'Aux1' and isSerial) then textAlign = "left" end -- Remove wikilinks from links in serial rowspans rows after the first. -- if (currentRow > 1) then -- args[v] = removeWikilinks(args, v) -- end local thisRowspan if (firstParameterGroupCell and k < firstParameterGroupCell) then thisRowspan = numberOfParameterGroups else thisRowspan = 1 end if (currentRow == 1 or (currentRow > 1 and k >= (firstParameterGroupCell or 0))) then createTableData(args[v], thisRowspan, textAlign) end nonNilParams = nonNilParams + 1 checkUsageOfDateTemplates(args, v, onInitialPage, title) end if (args[v] == "TBA") then cellValueTBA = true end end end --[[ Local function which is used to create the Title cell text. The title text will be handled in the following way: Line 1: <Title><RTitle> (with no space between) Line 2: <AltTitle><RAltTitle> (with no space between) OR Line 2: Transcription: <TranslitTitle> (<Language>: <NativeTitle>)<RAltTitle> (with space between first two parameters) If <Title> or <RTitle> are empty, then the values of line 2 will be placed on line 1 instead. --]] local function createTitleText(args) local titleString = '' local isCellPresent = false local useSecondLine = false local lineBreakUsed = false -- Surround the Title with quotes; No quotes if empty. if (args.Title ~= nil) then if (args.Title == "") then isCellPresent = true else titleString = '"' .. args.Title .. '"' useSecondLine = true isCellPresent = true end end if (args.RTitle ~= nil) then if (args.RTitle == "") then isCellPresent = true else titleString = titleString .. args.RTitle useSecondLine = true isCellPresent = true end end -- Surround the AltTitle/TranslitTitle with quotes; No quotes if empty. if (args.AltTitle or args.TranslitTitle) then isCellPresent = true if (useSecondLine) then titleString = titleString .. "<br />" lineBreakUsed = true end if (hasValue(args.AltTitle)) then titleString = titleString .. '"' .. args.AltTitle .. '"' elseif (hasValue(args.TranslitTitle)) then if (hasValue(args.NativeTitleLangCode)) then titleString = titleString .. 'Transcription: "' .. langModule._transl({args.NativeTitleLangCode, args.TranslitTitle, italic = 'no'}) .. '"' else titleString = titleString .. 'Transcription: "' .. args.TranslitTitle .. '"' end end end if (args.NativeTitle ~= nil) then if (args.NativeTitle == "") then isCellPresent = true else isCellPresent = true if (useSecondLine and lineBreakUsed == false) then titleString = titleString .. "<br />" end if (hasValue(args.NativeTitleLangCode)) then local languageCode = "Lang-" .. args.NativeTitleLangCode titleString = titleString .. " (" .. langModule._lang_xx_inherit({code = args.NativeTitleLangCode, args.NativeTitle}) .. ")" else titleString = titleString .. " (" .. args.NativeTitle .. ")" end end end if (args.RAltTitle ~= nil) then if (args.RAltTitle == "") then isCellPresent = true else isCellPresent = true if (useSecondLine and lineBreakUsed == false) then titleString = titleString .. "<br />" end titleString = titleString .. args.RAltTitle end end return titleString, isCellPresent end --[[ Local function which is used to extract data from the numbered title parameters (Title1, RTitle2, etc.), and then convert them to use the non-numbered prameter names (Title, RTitle). The function returns two results: -- The args parameter table. -- A boolean indicating if the title group has data. ]]-- local function extractDataFromNumberedTitleArgs(args, i) local nextGroupValid = false for _, v in ipairs(titleList) do local parameter = v local numberedParameter = v .. "_" .. i args[parameter] = args[numberedParameter] if (nextGroupValid == false and hasValue(args[numberedParameter])) then nextGroupValid = true end end return args, nextGroupValid end -- Local function which is used to process the multi title list. local function processMultiTitleList(args, numberOfParameterGroups) local nativeTitleLangCode = args.NativeTitleLangCode local titleText = "" local isCellPresent = false local isFirstTitleGroup = true -- Making sure that the title cell is created at least once and isn't created again if other #N titles are empty. for i = 1, numberOfParameterGroups do local args, nextGroupValid = extractDataFromNumberedTitleArgs(args, i) if (nextGroupValid) then if (isFirstTitleGroup == false) then titleText = titleText .. "<hr />" end local titleTextRow titleTextRow = createTitleText(args) titleText = titleText .. titleTextRow isFirstTitleGroup = false else if (isFirstTitleGroup) then titleText, isCellPresent = createTitleText(args) end -- Valid titles have to be in succession (#1, #2, #3 and not #1, #4 #5), so exit for loop if next group is empty. return titleText, isCellPresent end end return titleText end -- Local function which is used to create a Title cell. local function createTitleCell(args, numberOfParameterGroups, multiTitleListEnabled, isSerial) local titleText local isCellPresent if (multiTitleListEnabled) then titleText, isCellPresent = processMultiTitleList(args, numberOfParameterGroups) else titleText, isCellPresent = createTitleText(args) end if (isCellPresent == false) then return nil end local textAlign = "left" -- If Title is blank, then set Raw Title to TBA if (hasValue(titleText) == false) then titleText = tableEmptyCellModule._main({}) textAlign = "left" end -- If title is the first cell, create it with a !scope="row" if (nonNilParams == 0) then if (isSerial) then row:tag('th') :addClass('summary') :attr('scope', 'row') :attr('rowspan', numberOfParameterGroups) :css('text-align', textAlign) :wikitext(titleText) else row:tag('th') :addClass('summary') :attr('scope', 'row') :css('text-align', textAlign) :wikitext(titleText) end else if (isSerial) then row:tag('td') :addClass('summary') :attr('rowspan', numberOfParameterGroups) :css('text-align', textAlign) :wikitext(titleText) else row:tag('td') :addClass('summary') :css('text-align', textAlign) :wikitext(titleText) end end nonNilParams = nonNilParams + 1 end -- Local function which is used to create a table row header for either the -- EpisodeNumber or EpisodeNumber2 column cells. local function createTableRowEpisodeNumberHeader(episodeNumber, numberOfParameterGroups, episodeText) local epID = string.match(episodeNumber, "^%w+") row:tag('th') :attr('scope', 'row') :attr('rowspan', numberOfParameterGroups) :attr('id', epID and 'ep' .. epID or '') :css('text-align', 'center') :wikitext(episodeText) end --[[ Local function which is used to extract the text from the EpisodeNumber or EpisodeNumber2 parameters and format them into a correct MoS compliant version. Styles supported: -- A number range of two numbers, indicating the start and end of the range, seperated by an en-dash (–) with no spaces in between. Example: "1 - 2" -> "1–2"; "1-2-3" -> "1–3". -- An alphanumeric or letter range, similar to the above. Example: "A - B" -> "A–B"; "A-B-C" -> "A–C". Example: "A1 - B1" -> "A1–B1"; "A1-B1-C1" -> "A1–C1". -- A number range of two numbers, indicating the start and end of the range, seperated by a visual <hr /> (divider line). -- An alphanumeric or letter range, similar to the above. ]]-- local function getEpisodeText(episodeNumber) if (episodeNumber == '') then return tableEmptyCellModule._main({}) else local episodeNumber1 local episodeNumber2 -- Used for double episodes that need a visual "–"" or "<hr />"" added. local divider episodeNumber = episodeNumber:gsub('%s*<br%s*/?%s*>%s*', '<hr />') if (episodeNumber:match('^(%w+)%s*<hr */%s*>%s*(%w+)$')) then episodeNumber1, episodeNumber2 = episodeNumber:match('^(%w+)%s*<hr */%s*>%s*(%w+)$') divider = "<hr />" elseif (episodeNumber:match('^(%w+)%s*<hr */%s*>.-<hr */%s*>%s*(%w+)$')) then -- 3 or more elements episodeNumber1, episodeNumber2 = episodeNumber:match('^(%w+)%s*<hr */%s*>.-<hr */%s*>%s*(%w+)$') divider = "<hr />" elseif (mw.ustring.match(episodeNumber, '^(%w+)%s*[%s%-–/&]%s*(%w+)$')) then episodeNumber1, episodeNumber2 = mw.ustring.match(episodeNumber, '^(%w+)%s*[%s%-–/&]%s*(%w+)$') divider = "–" else episodeNumber1, episodeNumber2 = mw.ustring.match(episodeNumber, '^(%w+)%s*[%s%-–/&].-[%s%-–/&]%s*(%w+)$') -- 3 or more elements divider = "–" end if (not episodeNumber1) then return episodeNumber elseif (not episodeNumber2) then return string.match(episodeNumber, '%w+') else return episodeNumber1 .. divider .. episodeNumber2 end end end -- Local function which is used to create EpisodeNumber2 and EpisodeNumber3 cells. local function _createEpisodeNumberCellSecondary(episodeValue, numberOfParameterGroups) if (episodeValue) then local episodeText = getEpisodeText(episodeValue) if (nonNilParams == 0) then createTableRowEpisodeNumberHeader(episodeValue, numberOfParameterGroups, episodeText) else createTableData(episodeText, numberOfParameterGroups, "center") end nonNilParams = nonNilParams + 1 end end -- Local function which is used to create seconday episode number cells. local function createEpisodeNumberCellSecondary(args, numberOfParameterGroups) _createEpisodeNumberCellSecondary(args.EpisodeNumber2, numberOfParameterGroups) _createEpisodeNumberCellSecondary(args.EpisodeNumber3, numberOfParameterGroups) end -- Local function which is used to create an EpisodeNumber cell. local function createEpisodeNumberCell(args, numberOfParameterGroups) if (args.EpisodeNumber) then local episodeText = getEpisodeText(args.EpisodeNumber) createTableRowEpisodeNumberHeader(args.EpisodeNumber, numberOfParameterGroups, episodeText) nonNilParams = nonNilParams + 1 end end -- Local function which is used to create a single row of cells. -- This is the standard function called. local function createSingleRowCells(args, numberOfParameterGroups, multiTitleListEnabled, onInitialPage, title) createEpisodeNumberCell(args, 1) createEpisodeNumberCellSecondary(args, 1) createTitleCell(args, numberOfParameterGroups, multiTitleListEnabled, false) createCells(args, false, 1, onInitialPage, title, numberOfParameterGroups) end -- Local function which is used to create a multiple row of cells. -- This function is called when part of the row is rowspaned. -- Current use is for Doctor Who serials. local function createMultiRowCells(args, numberOfParameterGroups, onInitialPage, title, topColor) createEpisodeNumberCell(args, numberOfParameterGroups) createEpisodeNumberCellSecondary(args, numberOfParameterGroups) createTitleCell(args, numberOfParameterGroups, false, true) for i = 1, numberOfParameterGroups do args = extractDataFromNumberedSerialArgs(args, i, numberOfParameterGroups, title) createCells(args, true, i, onInitialPage, title, numberOfParameterGroups) if (i ~= numberOfParameterGroups) then row = row:done() -- Use done() to close the 'tr' tag in rowspaned rows. :tag('tr') :css('background', topColor) end end end -- Local function which is used to retrieve the NumParts value. local function getnumberOfParameterGroups(args) for k, v in ipairs(cellNameList) do local numberedParameter = v .. "_" .. 1 if (args[numberedParameter]) then parameterGroupCells[v] = true if not firstParameterGroupCell then firstParameterGroupCell = k end end end if (hasValue(args.NumParts)) then return args.NumParts, true else return 1, false end end -- Local function which is used to retrieve the Top Color value. local function getTopColor(args, rowColorEnabled, onInitialPage) local episodeNumber = mathModule._cleanNumber(args.EpisodeNumber) or 1 if (args.TopColor) then if (string.find(args.TopColor, "#")) then return args.TopColor else return '#' .. args.TopColor end elseif (rowColorEnabled and onInitialPage and mathModule._mod(episodeNumber, 2) == 0) then return '#E9E9E9' elseif (onInitialPage and args.ShortSummary) then return '#F2F2F2' else return 'inherit' end end -- Local function which is used to retrieve the Row Color value. local function isRowColorEnabled(args) local rowColorEnabled = yesNoModule(args.RowColor, false) if (args.RowColor and string.lower(args.RowColor) == 'on') then rowColorEnabled = true end return rowColorEnabled end -- Local function which is used to retrieve the Line Color value. local function getLineColor(args) -- Default color to light blue local lineColor = args.LineColor or 'CCCCFF' -- Add # to color if necessary, and set to default color if invalid if (htmlColor[lineColor] == nil) then lineColor = '#' .. (mw.ustring.match(lineColor, '^[%s#]*([a-fA-F0-9]*)[%s]*$') or '') if (lineColor == '#') then lineColor = '#CCCCFF' end end return lineColor end -- Local function which is used to check if the table is located on the page -- currently viewed, or on a transcluded page instead. -- If it is on a transcluded page, the episode summary should not be shown. local function isOnInitialPage(args, sublist, pageTitle, initiallistTitle) -- This should be the only check needed, however, it was previously implemented with two templates -- with one of them not requiring an article name, so for backward compatability, the whole sequence is kept. local onInitialPage -- Only sublist had anything about hiding, so only it needs to even check if (sublist) then onInitialPage = mw.uri.anchorEncode(pageTitle) == mw.uri.anchorEncode(initiallistTitle) -- avoid processing ghost references if (not onInitialPage) then args.ShortSummary = nil end else if (initiallistTitle == "") then onInitialPage = true else onInitialPage = mw.uri.anchorEncode(pageTitle) == mw.uri.anchorEncode(initiallistTitle) end end return onInitialPage end -- Local function which does the actual main process. local function _main(args, sublist) local title = mw.title.getCurrentTitle() local pageTitle = title.text local initiallistTitle = args['1'] or '' -- Is this list on the same page as the page directly calling the template? local onInitialPage = isOnInitialPage(args, sublist, pageTitle, initiallistTitle) -- Need just this parameter removed if blank, no others if (hasValue(args.ShortSummary) == false) then args.ShortSummary = nil end local lineColor = getLineColor(args) local rowColorEnabled = isRowColorEnabled(args) local topColor = getTopColor(args, rowColorEnabled, onInitialPage) local root = mw.html.create() -- Create the root mw.html object to return row = root:tag('tr') -- Create the table row and store it globally :addClass('vevent') :css('text-align', 'center') :css('background', topColor) local numberOfParameterGroups, multiTitleListEnabled = getnumberOfParameterGroups(args) if (multiTitleListEnabled and not args.Title_2) then createMultiRowCells(args, numberOfParameterGroups, onInitialPage, title, topColor) else createSingleRowCells(args, numberOfParameterGroups, multiTitleListEnabled, onInitialPage, title) end -- add these categories only in the mainspace and only if they are on the page where the template is used if (onInitialPage and title.namespace == 0) then addLineColorTrackingCategories(args) addTopColorTrackingCategories(args) end if (cellValueTBA == true and title.namespace == 0) then addTrackingCategory(trackingCategoryList["tba_values"]) end -- Do not show the summary if this is being transcluded on the initial list page -- Do include it on all other lists if (onInitialPage and args.ShortSummary) then local bottomWrapper = createShortSummaryRow(args, lineColor) return tostring(root) .. tostring(bottomWrapper) .. trackingCategories else return tostring(root) .. trackingCategories end end -- Local function which handles both module entry points. local function main(frame, sublist) local getArgs = require('Module:Arguments').getArgs local args -- Most parameters should still display when blank, so don't remove blanks if (sublist) then args = getArgs(frame, {removeBlanks = false, wrappers = 'Template:Episode list/sublist'}) else args = getArgs(frame, {removeBlanks = false, wrappers = 'Template:Episode list'}) end -- args['1'] = mw.getCurrentFrame():getParent():getTitle() return _main(args, sublist, frame) end --[[ Public function which is used to create an Episode row for an Episode Table used for lists of episodes where each table is on a different page, usually placed on individual season articles. For tables which are all on the same page see p.list(). Parameters: -- |1= — required; The title of the article where the Episode Table is located at. -- |EpisodeNumber= — suggested; The overall episode number in the series. -- |EpisodeNumber2= — suggested; The episode number in the season. -- |Title= — suggested; The English title of the episode. -- |RTitle= — optional; Unformatted parameter that can be used to add a reference after "Title", or can be used as a "raw title" to replace "Title" completely. -- |AltTitle= — optional; An alternative title, such as the title of a foreign show's episode in its native language, or a title that was originally changed. -- |TranslitTitle= — optional; The title of the episode transliteration (Romanization) to Latin characters. -- |RAltTitle= — optional; Unformatted parameter that can be used to add a reference after "AltTitle", or can be used as a "raw title" to replace "AltTitle" completely. -- |NativeTitle= — optional; The title of the episode in the native language. -- |NativeTitleLangCode — optional; The language code of the native title language. -- |Aux1= — optional; General purpose parameter. The meaning is specified by the column header. This parameter is also used for Serial episode titles, such as those used in Doctor Who. -- |DirectedBy= — optional; Name of the episode's director. May contain links. -- |WrittenBy= — optional; Primary writer(s) of the episode. May include links. -- |Aux2= — optional; General purpose parameter. The meaning is specified by the column header. -- |Aux3= — optional; General purpose parameter. The meaning is specified by the column header. -- |OriginalAirDate= — optional; This is the date the episode first aired on TV, or is scheduled to air. -- |AltDate= — optional; The next notable air date, such as the first air date of an anime in English. -- |Guests= — optional; List of Guests for talk shows. Cannot be used simultaneously with Aux1. -- |MusicalGuests= — optional; List of MusicalGuests for talk shows. Cannot be used simultaneously with Aux2. -- |ProdCode= — optional; The production code in the series. When defined, this parameter also creates a link anchor, prefixed by "pc"; for example, List of episodes#pc01. -- |Viewers= — optional; Number of viewers who watched the episode. Should include a reference. -- |Aux4= — optional; General purpose parameter. The meaning is specified by the column header. -- |ShortSummary= — optional; A short 100–200 word plot summary of the episode. -- |LineColor= — optional; Colors the separator line between episode entries. If not defined the color defaults to "#CCCCFF" and the article is placed in Category:Episode list using the default LineColor. Use of "#", or anything but a valid hex code will result in an invalid syntax. -- |TopColor= — discouraged; Colors the main row of information (that is, not the ShortSummary row). Articles using this parameter are placed in Category:Episode lists with row deviations. -- |RowColor= — optional; Switch parameter that must only be defined when the EpisodeNumber= entry is not a regular number (e.g. "12–13" for two episodes described in one table entry). If the first episode number is even, define pass "on". If the first episode number is odd, pass "off". --]] function p.sublist(frame) return main(frame, true) end --[[ Public function which is used to create an Episode row for an Episode Table used for lists of episodes where all tables are on the same page. For tables which are on different pages see p.sublist(). For complete parameter documentation, see the documentation at p.sublist(). --]] function p.list(frame) return main(frame, false) end return p a2f78a2a194bed9638416e32b6b77f3f24b8632c Template:Episode list 10 30 67 2024-01-03T20:50:59Z Laggardson 2 Created page with "<includeonly>{{#invoke:Episode list|list}}</includeonly><noinclude> {{documentation}} </noinclude>" wikitext text/x-wiki <includeonly>{{#invoke:Episode list|list}}</includeonly><noinclude> {{documentation}} </noinclude> 8351cf1badb05b51b382dd5712606be5e1f05e2f Template:Episode table 10 31 68 2024-01-03T20:55:46Z Laggardson 2 Created page with "<includeonly>{{#invoke:Episode table|main}}</includeonly><noinclude> {{documentation}} </noinclude>" wikitext text/x-wiki <includeonly>{{#invoke:Episode table|main}}</includeonly><noinclude> {{documentation}} </noinclude> 63334d27875aaeb913c7a37c3ccb16b00e408c44 Module:Color contrast 828 32 69 2024-01-03T20:58:02Z Laggardson 2 Created page with "-- -- This module implements -- {{Color contrast ratio}} -- {{Greater color contrast ratio}} -- {{ColorToLum}} -- {{RGBColorToLum}} -- local p = {} local HTMLcolor = mw.loadData( 'Module:Color contrast/colors' ) local function sRGB (v) if (v <= 0.03928) then v = v / 12.92 else v = math.pow((v+0.055)/1.055, 2.4) end return v end local function rgbdec2lum(R, G, B) if ( 0 <= R and R < 256 and 0 <= G and G < 256 and 0 <= B and B < 256 ) then return 0.2126 *..." Scribunto text/plain -- -- This module implements -- {{Color contrast ratio}} -- {{Greater color contrast ratio}} -- {{ColorToLum}} -- {{RGBColorToLum}} -- local p = {} local HTMLcolor = mw.loadData( 'Module:Color contrast/colors' ) local function sRGB (v) if (v <= 0.03928) then v = v / 12.92 else v = math.pow((v+0.055)/1.055, 2.4) end return v end local function rgbdec2lum(R, G, B) if ( 0 <= R and R < 256 and 0 <= G and G < 256 and 0 <= B and B < 256 ) then return 0.2126 * sRGB(R/255) + 0.7152 * sRGB(G/255) + 0.0722 * sRGB(B/255) else return '' end end local function hsl2lum(h, s, l) if ( 0 <= h and h < 360 and 0 <= s and s <= 1 and 0 <= l and l <= 1 ) then local c = (1 - math.abs(2*l - 1))*s local x = c*(1 - math.abs( math.fmod(h/60, 2) - 1) ) local m = l - c/2 local r, g, b = m, m, m if( 0 <= h and h < 60 ) then r = r + c g = g + x elseif( 60 <= h and h < 120 ) then r = r + x g = g + c elseif( 120 <= h and h < 180 ) then g = g + c b = b + x elseif( 180 <= h and h < 240 ) then g = g + x b = b + c elseif( 240 <= h and h < 300 ) then r = r + x b = b + c elseif( 300 <= h and h < 360 ) then r = r + c b = b + x end return rgbdec2lum(255*r, 255*g, 255*b) else return '' end end local function color2lum(c) if (c == nil) then return '' end -- html '#' entity c = c:gsub("&#35;", "#") -- whitespace c = c:match( '^%s*(.-)[%s;]*$' ) -- unstrip nowiki strip markers c = mw.text.unstripNoWiki(c) -- lowercase c = c:lower() -- first try to look it up local L = HTMLcolor[c] if (L ~= nil) then return L end -- convert from hsl if mw.ustring.match(c,'^hsl%([%s]*[0-9][0-9%.]*[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then local h, s, l = mw.ustring.match(c,'^hsl%([%s]*([0-9][0-9%.]*)[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$') return hsl2lum(tonumber(h), tonumber(s)/100, tonumber(l)/100) end -- convert from rgb if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*%)$') then local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*%)$') return rgbdec2lum(tonumber(R), tonumber(G), tonumber(B)) end -- convert from rgb percent if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$') return rgbdec2lum(255*tonumber(R)/100, 255*tonumber(G)/100, 255*tonumber(B)/100) end -- remove leading # (if there is one) and whitespace c = mw.ustring.match(c, '^[%s#]*([a-f0-9]*)[%s]*$') -- split into rgb local cs = mw.text.split(c or '', '') if( #cs == 6 ) then local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[2]) local G = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[4]) local B = 16*tonumber('0x' .. cs[5]) + tonumber('0x' .. cs[6]) return rgbdec2lum(R, G, B) elseif ( #cs == 3 ) then local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[1]) local G = 16*tonumber('0x' .. cs[2]) + tonumber('0x' .. cs[2]) local B = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[3]) return rgbdec2lum(R, G, B) end -- failure, return blank return '' end -- This exports the function for use in other modules. -- The colour is passed as a string. function p._lum(color) return color2lum(color) end function p._greatercontrast(args) local bias = tonumber(args['bias'] or '0') or 0 local css = (args['css'] and args['css'] ~= '') and true or false local v1 = color2lum(args[1] or '') local c2 = args[2] or '#FFFFFF' local v2 = color2lum(c2) local c3 = args[3] or '#000000' local v3 = color2lum(c3) local ratio1 = -1; local ratio2 = -1; if (type(v1) == 'number' and type(v2) == 'number') then ratio1 = (v2 + 0.05)/(v1 + 0.05) ratio1 = (ratio1 < 1) and 1/ratio1 or ratio1 end if (type(v1) == 'number' and type(v3) == 'number') then ratio2 = (v3 + 0.05)/(v1 + 0.05) ratio2 = (ratio2 < 1) and 1/ratio2 or ratio2 end if css then local c1 = args[1] or '' if mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then c1 = '#' .. c1 end if mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then c2 = '#' .. c2 end if mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then c3 = '#' .. c3 end return 'background-color:' .. c1 .. '; color:' .. ((ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or '') .. ';' end return (ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or '' end function p._ratio(args) local v1 = color2lum(args[1]) local v2 = color2lum(args[2]) if (type(v1) == 'number' and type(v2) == 'number') then -- v1 should be the brighter of the two. if v2 > v1 then v1, v2 = v2, v1 end return (v1 + 0.05)/(v2 + 0.05) else return args['error'] or '?' end end function p._styleratio(args) local style = (args[1] or ''):lower() local bg, fg = 'white', 'black' local lum_bg, lum_fg = 1, 0 if args[2] then local lum = color2lum(args[2]) if lum ~= '' then bg, lum_bg = args[2], lum end end if args[3] then local lum = color2lum(args[3]) if lum ~= '' then fg, lum_fg = args[3], lum end end local slist = mw.text.split(mw.ustring.gsub(mw.ustring.gsub(style or '', '&#[Xx]23;', '#'), '&#35;', '#'), ';') for k = 1,#slist do local s = slist[k] local k,v = s:match( '^[%s]*([^:]-):([^:]-)[%s;]*$' ) k = k or '' v = v or '' if (k:match('^[%s]*(background)[%s]*$') or k:match('^[%s]*(background%-color)[%s]*$')) then local lum = color2lum(v) if( lum ~= '' ) then bg, lum_bg = v, lum end elseif (k:match('^[%s]*(color)[%s]*$')) then local lum = color2lum(v) if( lum ~= '' ) then bg, lum_fg = v, lum end end end if lum_bg > lum_fg then return (lum_bg + 0.05)/(lum_fg + 0.05) else return (lum_fg + 0.05)/(lum_bg + 0.05) end end --[[ Use {{#invoke:Color contrast|somecolor}} directly or {{#invoke:Color contrast}} from a wrapper template. Parameters: -- |1= — required; A color to check. --]] function p.lum(frame) local color = frame.args[1] or frame:getParent().args[1] return p._lum(color) end function p.ratio(frame) local args = frame.args[1] and frame.args or frame:getParent().args return p._ratio(args) end function p.styleratio(frame) local args = frame.args[1] and frame.args or frame:getParent().args return p._styleratio(args) end function p.greatercontrast(frame) local args = frame.args[1] and frame.args or frame:getParent().args return p._greatercontrast(args) end return p 1e399769117591366a63f62996c9a407077cc711 Module:Color contrast/colors 828 33 70 2024-01-03T20:59:00Z Laggardson 2 Created page with "return { aliceblue = 0.92880068253475, antiquewhite = 0.84646951707754, aqua = 0.7874, aquamarine = 0.8078549208338, azure = 0.97265264954166, beige = 0.8988459998705, bisque = 0.80732327372979, black = 0, blanchedalmond = 0.85084439608156, blue = 0.0722, blueviolet = 0.12622014321946, brown = 0.098224287876511..." Scribunto text/plain return { aliceblue = 0.92880068253475, antiquewhite = 0.84646951707754, aqua = 0.7874, aquamarine = 0.8078549208338, azure = 0.97265264954166, beige = 0.8988459998705, bisque = 0.80732327372979, black = 0, blanchedalmond = 0.85084439608156, blue = 0.0722, blueviolet = 0.12622014321946, brown = 0.098224287876511, burlywood = 0.51559844533893, cadetblue = 0.29424681085422, chartreuse = 0.76032025902623, chocolate = 0.23898526114557, coral = 0.37017930872924, cornflowerblue = 0.30318641994179, cornsilk = 0.93562110372965, crimson = 0.16042199953026, cyan = 0.7874, darkblue = 0.018640801980939, darkcyan = 0.20329317839046, darkgoldenrod = 0.27264703559993, darkgray = 0.39675523072563, darkgreen = 0.091143429047575, darkgrey = 0.39675523072563, darkkhaki = 0.45747326349994, darkmagenta = 0.07353047651207, darkolivegreen = 0.12651920884889, darkorange = 0.40016167026524, darkorchid = 0.13413142174857, darkred = 0.054889674531132, darksalmon = 0.40541471563381, darkseagreen = 0.43789249325969, darkslateblue = 0.065792846227988, darkslategray = 0.067608151928044, darkslategrey = 0.067608151928044, darkturquoise = 0.4874606277449, darkviolet = 0.10999048339343, deeppink = 0.23866895828276, deepskyblue = 0.44481603395575, dimgray = 0.14126329114027, dimgrey = 0.14126329114027, dodgerblue = 0.27442536991456, firebrick = 0.10724525535015, floralwhite = 0.95922484825004, forestgreen = 0.18920812076002, fuchsia = 0.2848, gainsboro = 0.71569350050648, ghostwhite = 0.94311261886323, gold = 0.69860877428159, goldenrod = 0.41919977809569, gray = 0.2158605001139, green = 0.15438342968146, greenyellow = 0.80609472611453, grey = 0.2158605001139, honeydew = 0.96336535554782, hotpink = 0.34658438169715, indianred = 0.21406134963884, indigo = 0.03107561486337, ivory = 0.99071270600615, khaki = 0.77012343394121, lavender = 0.80318750514521, lavenderblush = 0.90172748631046, lawngreen = 0.73905893124963, lemonchiffon = 0.94038992245622, lightblue = 0.63709141280807, lightcoral = 0.35522120733135, lightcyan = 0.94587293494829, lightgoldenrodyellow = 0.93348351018297, lightgray = 0.65140563741982, lightgreen = 0.69091979956865, lightgrey = 0.65140563741982, lightpink = 0.58566152734898, lightsalmon = 0.4780675225206, lightseagreen = 0.35050145117042, lightskyblue = 0.56195637618331, lightslategray = 0.23830165007287, lightslategrey = 0.23830165007287, lightsteelblue = 0.53983888284666, lightyellow = 0.98161818392882, lime = 0.7152, limegreen = 0.44571042246098, linen = 0.88357340984379, magenta = 0.2848, maroon = 0.045891942324215, mediumaquamarine = 0.49389703310801, mediumblue = 0.044077780212328, mediumorchid = 0.21639251153773, mediumpurple = 0.22905858091648, mediumseagreen = 0.34393112338131, mediumslateblue = 0.20284629471622, mediumspringgreen = 0.70704308194184, mediumturquoise = 0.5133827926448, mediumvioletred = 0.14371899849357, midnightblue = 0.02071786635086, mintcream = 0.97834604947588, mistyrose = 0.82183047859185, moccasin = 0.80083000991567, navajowhite = 0.76519682342785, navy = 0.015585128108224, oldlace = 0.91900633405549, olive = 0.20027537200568, olivedrab = 0.22593150951929, orange = 0.4817026703631, orangered = 0.25516243753416, orchid = 0.31348806761439, palegoldenrod = 0.78792647887614, palegreen = 0.77936759006353, paleturquoise = 0.76436077921714, palevioletred = 0.28754994117889, papayawhip = 0.87797100199835, peachpuff = 0.74905589878251, peru = 0.30113074877936, pink = 0.63271070702466, plum = 0.45734221587969, powderblue = 0.68254586500605, purple = 0.061477070432439, rebeccapurple = 0.07492341159447, red = 0.2126, rosybrown = 0.32319457649407, royalblue = 0.16663210743188, saddlebrown = 0.097922285020521, salmon = 0.36977241527596, sandybrown = 0.46628543696283, seagreen = 0.19734199706275, seashell = 0.92737862206922, sienna = 0.13697631337098, silver = 0.52711512570581, skyblue = 0.55291668518184, slateblue = 0.14784278062136, slategray = 0.20896704076536, slategrey = 0.20896704076536, snow = 0.96533341834849, springgreen = 0.73052306068529, steelblue = 0.20562642207625, tan = 0.48237604163921, teal = 0.16996855778968, thistle = 0.56818401093733, tomato = 0.30638612719415, turquoise = 0.5895536427578, violet = 0.40315452986676, wheat = 0.74909702820482, white = 1, whitesmoke = 0.91309865179342, yellow = 0.9278, yellowgreen = 0.50762957208707, } 6ae47fdb24de4eed5ec26d203faf5341a388987b Module:Arguments 828 34 71 2024-01-03T21:01:49Z Laggardson 2 Created page with "-- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly. local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local arguments = {} -- Generate four different tidyVal functions, so that we don't have to check the -- options every time we call it. local function tidyValDefault(key, val) if type(val) == 'string'..." Scribunto text/plain -- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly. local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local arguments = {} -- Generate four different tidyVal functions, so that we don't have to check the -- options every time we call it. local function tidyValDefault(key, val) if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val == '' then return nil else return val end else return val end end local function tidyValTrimOnly(key, val) if type(val) == 'string' then return val:match('^%s*(.-)%s*$') else return val end end local function tidyValRemoveBlanksOnly(key, val) if type(val) == 'string' then if val:find('%S') then return val else return nil end else return val end end local function tidyValNoChange(key, val) return val end local function matchesTitle(given, title) local tp = type( given ) return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title end local translate_mt = { __index = function(t, k) return k end } function arguments.getArgs(frame, options) checkType('getArgs', 1, frame, 'table', true) checkType('getArgs', 2, options, 'table', true) frame = frame or {} options = options or {} --[[ -- Set up argument translation. --]] options.translate = options.translate or {} if getmetatable(options.translate) == nil then setmetatable(options.translate, translate_mt) end if options.backtranslate == nil then options.backtranslate = {} for k,v in pairs(options.translate) do options.backtranslate[v] = k end end if options.backtranslate and getmetatable(options.backtranslate) == nil then setmetatable(options.backtranslate, { __index = function(t, k) if options.translate[k] ~= k then return nil else return k end end }) end --[[ -- Get the argument tables. If we were passed a valid frame object, get the -- frame arguments (fargs) and the parent frame arguments (pargs), depending -- on the options set and on the parent frame's availability. If we weren't -- passed a valid frame object, we are being called from another Lua module -- or from the debug console, so assume that we were passed a table of args -- directly, and assign it to a new variable (luaArgs). --]] local fargs, pargs, luaArgs if type(frame.args) == 'table' and type(frame.getParent) == 'function' then if options.wrappers then --[[ -- The wrappers option makes Module:Arguments look up arguments in -- either the frame argument table or the parent argument table, but -- not both. This means that users can use either the #invoke syntax -- or a wrapper template without the loss of performance associated -- with looking arguments up in both the frame and the parent frame. -- Module:Arguments will look up arguments in the parent frame -- if it finds the parent frame's title in options.wrapper; -- otherwise it will look up arguments in the frame object passed -- to getArgs. --]] local parent = frame:getParent() if not parent then fargs = frame.args else local title = parent:getTitle():gsub('/sandbox$', '') local found = false if matchesTitle(options.wrappers, title) then found = true elseif type(options.wrappers) == 'table' then for _,v in pairs(options.wrappers) do if matchesTitle(v, title) then found = true break end end end -- We test for false specifically here so that nil (the default) acts like true. if found or options.frameOnly == false then pargs = parent.args end if not found or options.parentOnly == false then fargs = frame.args end end else -- options.wrapper isn't set, so check the other options. if not options.parentOnly then fargs = frame.args end if not options.frameOnly then local parent = frame:getParent() pargs = parent and parent.args or nil end end if options.parentFirst then fargs, pargs = pargs, fargs end else luaArgs = frame end -- Set the order of precedence of the argument tables. If the variables are -- nil, nothing will be added to the table, which is how we avoid clashes -- between the frame/parent args and the Lua args. local argTables = {fargs} argTables[#argTables + 1] = pargs argTables[#argTables + 1] = luaArgs --[[ -- Generate the tidyVal function. If it has been specified by the user, we -- use that; if not, we choose one of four functions depending on the -- options chosen. This is so that we don't have to call the options table -- every time the function is called. --]] local tidyVal = options.valueFunc if tidyVal then if type(tidyVal) ~= 'function' then error( "bad value assigned to option 'valueFunc'" .. '(function expected, got ' .. type(tidyVal) .. ')', 2 ) end elseif options.trim ~= false then if options.removeBlanks ~= false then tidyVal = tidyValDefault else tidyVal = tidyValTrimOnly end else if options.removeBlanks ~= false then tidyVal = tidyValRemoveBlanksOnly else tidyVal = tidyValNoChange end end --[[ -- Set up the args, metaArgs and nilArgs tables. args will be the one -- accessed from functions, and metaArgs will hold the actual arguments. Nil -- arguments are memoized in nilArgs, and the metatable connects all of them -- together. --]] local args, metaArgs, nilArgs, metatable = {}, {}, {}, {} setmetatable(args, metatable) local function mergeArgs(tables) --[[ -- Accepts multiple tables as input and merges their keys and values -- into one table. If a value is already present it is not overwritten; -- tables listed earlier have precedence. We are also memoizing nil -- values, which can be overwritten if they are 's' (soft). --]] for _, t in ipairs(tables) do for key, val in pairs(t) do if metaArgs[key] == nil and nilArgs[key] ~= 'h' then local tidiedVal = tidyVal(key, val) if tidiedVal == nil then nilArgs[key] = 's' else metaArgs[key] = tidiedVal end end end end end --[[ -- Define metatable behaviour. Arguments are memoized in the metaArgs table, -- and are only fetched from the argument tables once. Fetching arguments -- from the argument tables is the most resource-intensive step in this -- module, so we try and avoid it where possible. For this reason, nil -- arguments are also memoized, in the nilArgs table. Also, we keep a record -- in the metatable of when pairs and ipairs have been called, so we do not -- run pairs and ipairs on the argument tables more than once. We also do -- not run ipairs on fargs and pargs if pairs has already been run, as all -- the arguments will already have been copied over. --]] metatable.__index = function (t, key) --[[ -- Fetches an argument when the args table is indexed. First we check -- to see if the value is memoized, and if not we try and fetch it from -- the argument tables. When we check memoization, we need to check -- metaArgs before nilArgs, as both can be non-nil at the same time. -- If the argument is not present in metaArgs, we also check whether -- pairs has been run yet. If pairs has already been run, we return nil. -- This is because all the arguments will have already been copied into -- metaArgs by the mergeArgs function, meaning that any other arguments -- must be nil. --]] if type(key) == 'string' then key = options.translate[key] end local val = metaArgs[key] if val ~= nil then return val elseif metatable.donePairs or nilArgs[key] then return nil end for _, argTable in ipairs(argTables) do local argTableVal = tidyVal(key, argTable[key]) if argTableVal ~= nil then metaArgs[key] = argTableVal return argTableVal end end nilArgs[key] = 'h' return nil end metatable.__newindex = function (t, key, val) -- This function is called when a module tries to add a new value to the -- args table, or tries to change an existing value. if type(key) == 'string' then key = options.translate[key] end if options.readOnly then error( 'could not write to argument table key "' .. tostring(key) .. '"; the table is read-only', 2 ) elseif options.noOverwrite and args[key] ~= nil then error( 'could not write to argument table key "' .. tostring(key) .. '"; overwriting existing arguments is not permitted', 2 ) elseif val == nil then --[[ -- If the argument is to be overwritten with nil, we need to erase -- the value in metaArgs, so that __index, __pairs and __ipairs do -- not use a previous existing value, if present; and we also need -- to memoize the nil in nilArgs, so that the value isn't looked -- up in the argument tables if it is accessed again. --]] metaArgs[key] = nil nilArgs[key] = 'h' else metaArgs[key] = val end end local function translatenext(invariant) local k, v = next(invariant.t, invariant.k) invariant.k = k if k == nil then return nil elseif type(k) ~= 'string' or not options.backtranslate then return k, v else local backtranslate = options.backtranslate[k] if backtranslate == nil then -- Skip this one. This is a tail call, so this won't cause stack overflow return translatenext(invariant) else return backtranslate, v end end end metatable.__pairs = function () -- Called when pairs is run on the args table. if not metatable.donePairs then mergeArgs(argTables) metatable.donePairs = true end return translatenext, { t = metaArgs } end local function inext(t, i) -- This uses our __index metamethod local v = t[i + 1] if v ~= nil then return i + 1, v end end metatable.__ipairs = function (t) -- Called when ipairs is run on the args table. return inext, t, 0 end return args end return arguments 3134ecce8429b810d445e29eae115e2ae4c36c53 Module:Delink 828 35 72 2024-01-03T21:05:08Z Laggardson 2 Created page with "-- This module de-links most wikitext. require("Module:No globals") local p = {} local getArgs local function delinkReversePipeTrick(s) if s:match("^%[%[|.*[|\n]") then -- Check for newlines or multiple pipes. return s end return s:match("%[%[|(.*)%]%]") end local function delinkPipeTrick(s) -- We need to deal with colons, brackets, and commas, per [[Help:Pipe trick]]. -- First, remove the text before the first colon, if any. if s:match(":") then s = s:ma..." Scribunto text/plain -- This module de-links most wikitext. require("Module:No globals") local p = {} local getArgs local function delinkReversePipeTrick(s) if s:match("^%[%[|.*[|\n]") then -- Check for newlines or multiple pipes. return s end return s:match("%[%[|(.*)%]%]") end local function delinkPipeTrick(s) -- We need to deal with colons, brackets, and commas, per [[Help:Pipe trick]]. -- First, remove the text before the first colon, if any. if s:match(":") then s = s:match("%[%[.-:(.*)|%]%]") -- If there are no colons, grab all of the text apart from the square brackets and the pipe. else s = s:match("%[%[(.*)|%]%]") end -- Next up, brackets and commas. if s:match("%(.-%)$") then -- Brackets trump commas. s = s:match("(.-) ?%(.-%)$") elseif s:match(",") then -- If there are no brackets, display only the text before the first comma. s = s:match("(.-),.*$") end return s end -- Return wikilink target |wikilinks=target local function getDelinkedTarget(s) local result = s -- Deal with the reverse pipe trick. if result:match("%[%[|") then return delinkReversePipeTrick(result) end result = mw.uri.decode(result, "PATH") -- decode percent-encoded entities. Leave underscores and plus signs. result = mw.text.decode(result, true) -- decode HTML entities. -- Check for bad titles. To do this we need to find the -- title area of the link, i.e. the part before any pipes. local target_area if result:match("|") then -- Find if we're dealing with a piped link. target_area = result:match("^%[%[(.-)|.*%]%]") else target_area = result:match("^%[%[(.-)%]%]") end -- Check for bad characters. if mw.ustring.match(target_area, "[%[%]<>{}%%%c\n]") and mw.ustring.match(target_area, "[%[%]<>{}%%%c\n]") ~= "?" then return s end return target_area end local function getDelinkedLabel(s) local result = s -- Deal with the reverse pipe trick. if result:match("%[%[|") then return delinkReversePipeTrick(result) end result = mw.uri.decode(result, "PATH") -- decode percent-encoded entities. Leave underscores and plus signs. result = mw.text.decode(result, true) -- decode HTML entities. -- Check for bad titles. To do this we need to find the -- title area of the link, i.e. the part before any pipes. local target_area if result:match("|") then -- Find if we're dealing with a piped link. target_area = result:match("^%[%[(.-)|.*%]%]") else target_area = result:match("^%[%[(.-)%]%]") end -- Check for bad characters. if mw.ustring.match(target_area, "[%[%]<>{}%%%c\n]") and mw.ustring.match(target_area, "[%[%]<>{}%%%c\n]") ~= "?" then return s end -- Check for categories, interwikis, and files. local colon_prefix = result:match("%[%[(.-):.*%]%]") or "" -- Get the text before the first colon. local ns = mw.site.namespaces[colon_prefix] -- see if this is a known namespace if mw.language.isKnownLanguageTag(colon_prefix) or (ns and (ns.canonicalName == "File" or ns.canonicalName == "Category")) then return "" end -- Remove the colon if the link is using the [[Help:Colon trick]]. if result:match("%[%[:") then result = "[[" .. result:match("%[%[:(.*%]%])") end -- Deal with links using the [[Help:Pipe trick]]. if mw.ustring.match(result, "^%[%[[^|]*|%]%]") then return delinkPipeTrick(result) end -- Find the display area of the wikilink if result:match("|") then -- Find if we're dealing with a piped link. result = result:match("^%[%[.-|(.+)%]%]") -- Remove new lines from the display of multiline piped links, -- where the pipe is before the first new line. result = result:gsub("\n", "") else result = result:match("^%[%[(.-)%]%]") end return result end local function delinkURL(s) -- Assume we have already delinked internal wikilinks, and that -- we have been passed some text between two square brackets [foo]. -- If the text contains a line break it is not formatted as a URL, regardless of other content. if s:match("\n") then return s end -- Check if the text has a valid URL prefix and at least one valid URL character. local valid_url_prefixes = {"//", "http://", "https://", "ftp://", "gopher://", "mailto:", "news:", "irc://"} local url_prefix for _ ,v in ipairs(valid_url_prefixes) do if mw.ustring.match(s, '^%[' .. v ..'[^"%s].*%]' ) then url_prefix = v break end end -- Get display text if not url_prefix then return s end s = s:match("^%[" .. url_prefix .. "(.*)%]") -- Grab all of the text after the URL prefix and before the final square bracket. s = s:match('^.-(["<> ].*)') or "" -- Grab all of the text after the first URL separator character ("<> ). s = mw.ustring.match(s, "^%s*(%S.*)$") or "" -- If the separating character was a space, trim it off. local s_decoded = mw.text.decode(s, true) if mw.ustring.match(s_decoded, "%c") then return s end return s_decoded end local function delinkLinkClass(text, pattern, delinkFunction) if type(text) ~= "string" then error("Attempt to de-link non-string input.", 2) end if type(pattern) ~= "string" or mw.ustring.sub(pattern, 1, 1) ~= "^" then error('Invalid pattern detected. Patterns must begin with "^".', 2) end -- Iterate over the text string, and replace any matched text. using the -- delink function. We need to iterate character by character rather -- than just use gsub, otherwise nested links aren't detected properly. local result = "" while text ~= "" do -- Replace text using one iteration of gsub. text = mw.ustring.gsub(text, pattern, delinkFunction, 1) -- Append the left-most character to the result string. result = result .. mw.ustring.sub(text, 1, 1) text = mw.ustring.sub(text, 2, -1) end return result end function p._delink(args) local text = args[1] or "" if args.refs == "yes" then -- Remove any [[Help:Strip markers]] representing ref tags. In most situations -- this is not a good idea - only use it if you know what you are doing! text = mw.ustring.gsub(text, "UNIQ%w*%-ref%-%d*%-QINU", "") end if args.comments ~= "no" then text = text:gsub("<!%-%-.-%-%->", "") -- Remove html comments. end if args.wikilinks ~= "no" and args.wikilinks ~= "target" then -- De-link wikilinks and return the label portion of the wikilink. text = delinkLinkClass(text, "^%[%[.-%]%]", getDelinkedLabel) elseif args.wikilinks == "target" then -- De-link wikilinks and return the target portions of the wikilink. text = delinkLinkClass(text, "^%[%[.-%]%]", getDelinkedTarget) end if args.urls ~= "no" then text = delinkLinkClass(text, "^%[.-%]", delinkURL) -- De-link URLs. end if args.whitespace ~= "no" then -- Replace single new lines with a single space, but leave double new lines -- and new lines only containing spaces or tabs before a second new line. text = mw.ustring.gsub(text, "([^\n \t][ \t]*)\n([ \t]*[^\n \t])", "%1 %2") text = text:gsub("[ \t]+", " ") -- Remove extra tabs and spaces. end return text end function p.delink(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return p._delink(getArgs(frame, {wrappers = 'Template:Delink'})) end return p 4e3f4d4f5d28103166f5e2ab57e5c822ec2dd021 Module:No globals 828 36 73 2024-01-03T21:07:23Z Laggardson 2 Created page with "local mt = getmetatable(_G) or {} function mt.__index (t, k) if k ~= 'arg' then error('Tried to read nil global ' .. tostring(k), 2) end return nil end function mt.__newindex(t, k, v) if k ~= 'arg' then error('Tried to write global ' .. tostring(k), 2) end rawset(t, k, v) end setmetatable(_G, mt)" Scribunto text/plain local mt = getmetatable(_G) or {} function mt.__index (t, k) if k ~= 'arg' then error('Tried to read nil global ' .. tostring(k), 2) end return nil end function mt.__newindex(t, k, v) if k ~= 'arg' then error('Tried to write global ' .. tostring(k), 2) end rawset(t, k, v) end setmetatable(_G, mt) 8ce3969f7d53b08bd00dabe4cc9780bc6afd412a Module:Lang 828 37 74 2024-01-03T21:10:19Z Laggardson 2 Created page with "--[=[ Lua support for the {{lang}}, {{lang-xx}}, and {{transl}} templates and replacement of various supporting templates. ]=] require('Module:No globals'); local getArgs = require ('Module:Arguments').getArgs; local unicode = require ("Module:Unicode data"); -- for is_latin() and is_rtl() local yesno = require ('Module:Yesno'); local lang_data = mw.loadData ('Module:Lang/data'); -- language name override and transliteration tool-tip tables local lang..." Scribunto text/plain --[=[ Lua support for the {{lang}}, {{lang-xx}}, and {{transl}} templates and replacement of various supporting templates. ]=] require('Module:No globals'); local getArgs = require ('Module:Arguments').getArgs; local unicode = require ("Module:Unicode data"); -- for is_latin() and is_rtl() local yesno = require ('Module:Yesno'); local lang_data = mw.loadData ('Module:Lang/data'); -- language name override and transliteration tool-tip tables local lang_name_table = lang_data.lang_name_table; -- language codes, names, regions, scripts, suppressed scripts local lang_table = lang_data.lang_name_table.lang; local lang_dep_table = lang_data.lang_name_table.lang_dep; local script_table = lang_data.lang_name_table.script; local region_table = lang_data.lang_name_table.region; local variant_table = lang_data.lang_name_table.variant; local suppressed_table = lang_data.lang_name_table.suppressed; local override_table = lang_data.override; local synonym_table = mw.loadData ('Module:Lang/ISO 639 synonyms'); -- ISO 639-2/639-2T code translation to 639-1 code local namespace = mw.title.getCurrentTitle().namespace; -- used for categorization local content_lang = mw.language.getContentLanguage(); local this_wiki_lang_tag = content_lang.code; -- get this wiki's language tag local this_wiki_lang_dir = content_lang:getDir(); -- get this wiki's language direction local initial_style_state; -- set by lang_xx_normal() and lang_xx_italic() local maint_cats = {}; -- maintenance categories go here local maint_msgs = {}; -- and their messages go here --[[--------------------------< I S _ S E T >------------------------------------------------------------------ Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string. ]] local function is_set( var ) return not (var == nil or var == ''); end --[[--------------------------< I N V E R T _ I T A L I C S >------------------------------------------------- This function attempts to invert the italic markup a args.text by adding/removing leading/trailing italic markup in args.text. Like |italic=unset, |italic=invert disables automatic italic markup. Individual leading/trailing apostrophes are converted to their html numeric entity equivalent so that the new italic markup doesn't become bold markup inadvertently. Leading and trailing wiki markup is extracted from args.text into separate table elements. Addition, removal, replacement of wiki markup is handled by a string.gsub() replacement table operating only on these separate elements. In the string.gsub() matching pattern, '.*' matches empty string as well as the three expected wiki markup patterns. This function expects that markup in args.text is complete and correct; if it is not, oddness may result. ]] local function invert_italics (source) local invert_pattern_table = { -- leading/trailing markup add/remove/replace patterns [""]="\'\'", -- empty string becomes italic markup ["\'\'"]="", -- italic markup becomes empty string ["\'\'\'"]="\'\'\'\'\'", -- bold becomes bold italic ["\'\'\'\'\'"]="\'\'\'", -- bold italic become bold }; local seg = {}; source = source:gsub ("%f[\']\'%f[^\']", '&#39;'); -- protect single quote marks from being interpreted as bold markup seg[1] = source:match ('^(\'\'+%f[^\']).+') or ''; -- get leading markup, if any; ignore single quote seg[3] = source:match ('.+(%f[\']\'\'+)$') or ''; -- get trailing markup, if any; ignore single quote if '' ~= seg[1] and '' ~= seg[3] then -- extract the 'text' seg[2] = source:match ('^\'\'+%f[^\'](.+)%f[\']\'\'+$') -- from between leading and trailing markup elseif '' ~= seg[1] then seg[2] = source:match ('^\'\'+%f[^\'](.+)') -- following leading markup elseif '' ~= seg[3] then seg[2] = source:match ('(.+)%f[\']\'\'+$') -- preceding trailing markup else seg[2] = source -- when there is no markup end seg[1] = invert_pattern_table[seg[1]] or seg[1]; -- replace leading markup according to pattern table seg[3] = invert_pattern_table[seg[3]] or seg[3]; -- replace leading markup according to pattern table return table.concat (seg); -- put it all back together and done end --[[--------------------------< V A L I D A T E _ I T A L I C >------------------------------------------------ validates |italic= or |italics= assigned values. When |italic= is set and has an acceptible assigned value, return the matching css font-style property value or, for the special case 'default', return nil. When |italic= is not set, or has an unacceptible assigned value, return nil and a nil error message. When both |italic= and |italics= are set, returns nil and a 'conflicting' error message. The return value nil causes the calling lang, lang_xx, or transl function to set args.italic according to the template's defined default ('inherit' for {{lang}}, 'inherit' or 'italic' for {{lang-xx}} depending on the individual template's requirements, 'italic' for {{transl}}) or to the value appropriate to |script=, if set ({{lang}} and {{lang-xx}} only). Accepted values and the values that this function returns are are: nil - when |italic= absent or not set; returns nil default - for completeness, should rarely if ever be used; returns nil yes - force args.text to be rendered in italic font; returns 'italic' no - force args.text to be rendered in normal font; returns 'normal' unset - disables font control so that font-style applied to text is dictated by markup inside or outside the template; returns 'inherit' invert - disables font control so that font-style applied to text is dictated by markup outside or inverted inside the template; returns 'invert' ]] local function validate_italic (args) local properties = {['yes'] = 'italic', ['no'] = 'normal', ['unset'] = 'inherit', ['invert'] = 'invert', ['default'] = nil}; local count = 0 for _, arg in pairs {'italic', 'italics', 'i'} do if args[arg] then count = count + 1 end end if count > 1 then -- return nil and an error message if more than one is set return nil, 'only one of |italic=, |italics=, or |i= can be specified'; end return properties[args.italic or args.italics or args.i], nil; -- return an appropriate value and a nil error message end --[=[--------------------------< V A L I D A T E _ C A T _ A R G S >---------------------------------------------------------- Default behavior of the {{lang}} and {{lang-xx}} templates is to add categorization when the templates are used in mainspace. This default functionality may be suppressed by setting |nocat=yes or |cat=no. This function selects one of these two parameters to control categorization. Because having two parameters with 'opposite' names and 'opposite' values is confusing, this function accepts only affirmative values for |nocat= and only negative values for |cat=; in both cases the 'other' sense (and non-sense) is not accepted and the parameter is treated as if it were not set in the template. Sets args.nocat to true if categorization is to be turned off; to nil if the default behavior should apply. Accepted values for |nocat= are the text strings: 'yes', 'y', 'true', 't', on, '1' -- [[Module:Yesno]] returns logical true for all of these; false or nil else for |cat= 'no', 'n', 'false', 'f', 'off', '0' -- [[Module:Yesno]] returns logical false for all of these; true or nil else ]=] local function validate_cat_args (args) if not (args.nocat or args.cat) then -- both are nil, so categorize return; end if false == yesno (args.cat) or true == yesno (args.nocat) then args.nocat = true; -- set to true when args.nocat is affirmative; nil else (as if the parameter were not set in the template) else -- args.nocat is the parameter actually used. args.nocat = nil; end end --[[--------------------------< I N _ A R R A Y >-------------------------------------------------------------- Whether needle is in haystack ]] local function in_array ( needle, haystack ) if needle == nil then return false; end for n,v in ipairs( haystack ) do if v == needle then return n; end end return false; end --[[--------------------------< F O R M A T _ I E T F _ T A G >------------------------------------------------ prettify ietf tags to use recommended subtag formats: code: lower case script: sentence case region: upper case variant: lower case private: lower case prefixed with -x- ]] local function format_ietf_tag (code, script, region, variant, private) local out = {}; if is_set (private) then return table.concat ({code:lower(), 'x', private:lower()}, '-'); -- if private, all other tags ignored end table.insert (out, code:lower()); if is_set (script) then script = script:lower():gsub ('^%a', string.upper); table.insert (out, script); end if is_set (region) then table.insert (out, region:upper()); end if is_set (variant) then table.insert (out, variant:lower()); end return table.concat (out, '-'); end --[[--------------------------< G E T _ I E T F _ P A R T S >-------------------------------------------------- extracts and returns IETF language tag parts: primary language subtag (required) - 2 or 3 character IANA language code script subtag - four character IANA script code region subtag - two-letter or three digit IANA region code variant subtag - four digit or 5-8 alnum variant code; only one variant subtag supported private subtag - x- followed by 1-8 alnum private code; only supported with the primary language tag in any one of these forms lang lang-variant lang-script lang-script-variant lang-region lang-region-variant lang-script-region lang-script-region-variant lang-x-private each of lang, script, region, variant, and private, when used, must be valid Languages with both two- and three-character code synonyms are promoted to the two-character synonym because the IANA registry file omits the synonymous three-character code; we cannot depend on browsers understanding the synonymous three-character codes in the lang= attribute. For {{lang-xx}} templates, the parameters |script=, |region=, and |variant= are supported (not supported in {{lang}} because those parameters are superfluous to the IETF subtags in |code=) returns six values; all lower case. Valid parts are returned as themselves; omitted parts are returned as empty strings, invalid parts are returned as nil; the sixth returned item is an error message (if an error detected) or nil. see http://www.rfc-editor.org/rfc/bcp/bcp47.txt section 2.1 ]] local function get_ietf_parts (source, args_script, args_region, args_variant) local code, script, region, variant, private; -- ietf tag parts if not is_set (source) then return nil, nil, nil, nil, nil, 'missing language tag'; end local pattern = { -- table of tables holding acceptibe ietf tag patterns and short names of the ietf part captured by the pattern {'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 1 - ll-Ssss-RR-variant (where variant is 4 digits) {'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%d%d%d%d)$', 's', 'r', 'v'}, -- 2 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 4 digits) {'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 3 - ll-Ssss-RR-variant (where variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'r', 'v'}, -- 4 - ll-Ssss-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d%d)$', 's', 'v'}, -- 5 - ll-Ssss-variant (where variant is 4 digits) {'^(%a%a%a?)%-(%a%a%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 's', 'v'}, -- 6 - ll-Ssss-variant (where variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%a%a)%-(%d%d%d%d)$', 'r', 'v'}, -- 7 - ll-RR-variant (where variant is 4 digits) {'^(%a%a%a?)%-(%d%d%d)%-(%d%d%d%d)$', 'r', 'v'}, -- 8 - ll-DDD-variant (where region is 3 digits; variant is 4 digits) {'^(%a%a%a?)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 9 - ll-RR-variant (where variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$', 'r', 'v'}, -- 10 - ll-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%d%d%d%d)$', 'v'}, -- 11 - ll-variant (where variant is 4 digits) {'^(%a%a%a?)%-(%w%w%w%w%w%w?%w?%w?)$', 'v'}, -- 12 - ll-variant (where variant is 5-8 alnum characters) {'^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)$', 's', 'r'}, -- 13 - ll-Ssss-RR {'^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)$', 's', 'r'}, -- 14 - ll-Ssss-DDD (region is 3 digits) {'^(%a%a%a?)%-(%a%a%a%a)$', 's'}, -- 15 - ll-Ssss {'^(%a%a%a?)%-(%a%a)$', 'r'}, -- 16 - ll-RR {'^(%a%a%a?)%-(%d%d%d)$', 'r'}, -- 17 - ll-DDD (region is 3 digits) {'^(%a%a%a?)$'}, -- 18 - ll {'^(%a%a%a?)%-x%-(%w%w?%w?%w?%w?%w?%w?%w?)$', 'p'}, -- 19 - ll-x-pppppppp (private is 1-8 alnum characters) } local t = {}; -- table of captures; serves as a translator between captured ietf tag parts and named variables for i, v in ipairs (pattern) do -- spin through the pattern table looking for a match local c1, c2, c3, c4; -- captures in the 'pattern' from the pattern table go here c1, c2, c3, c4 = source:match (pattern[i][1]); -- one or more captures set if source matches pattern[i]) if c1 then -- c1 always set on match code = c1; -- first capture is always code t = { [pattern[i][2] or 'x'] = c2, -- fill the table of captures with the rest of the captures [pattern[i][3] or 'x'] = c3, -- take index names from pattern table and assign sequential captures [pattern[i][4] or 'x'] = c4, -- index name may be nil in pattern[i] table so "or 'x'" spoofs a name for this index in this table }; script = t.s or ''; -- translate table contents to named variables; region = t.r or ''; -- absent table entries are nil so set named ietf parts to empty string for concatenation variant= t.v or ''; private = t.p or ''; break; -- and done end end if not code then return nil, nil, nil, nil, nil, table.concat ({'unrecognized language tag: ', source}); -- don't know what we got but it is malformed end code = code:lower(); -- ensure that we use and return lower case version of this if not (override_table[code] or lang_table[code] or synonym_table[code] or lang_dep_table[code]) then return nil, nil, nil, nil, nil, table.concat ({'unrecognized language code: ', code}); -- invalid language code, don't know about the others (don't care?) end if synonym_table[code] then -- if 639-2/639-2T code has a 639-1 synonym table.insert (maint_cats, table.concat ({'Lang and lang-xx code promoted to ISO 639-1|', code})); table.insert (maint_msgs, table.concat ({'code: ', code, ' promoted to code: ', synonym_table[code]})); code = synonym_table[code]; -- use the synonym end if is_set (script) then if is_set (args_script) then return code, nil, nil, nil, nil, 'redundant script tag'; -- both code with script and |script= not allowed end else script = args_script or ''; -- use args.script if provided end if is_set (script) then script = script:lower(); -- ensure that we use and return lower case version of this if not script_table[script] then return code, nil, nil, nil, nil, table.concat ({'unrecognized script: ', script, ' for code: ', code}); -- language code ok, invalid script, don't know about the others (don't care?) end end if suppressed_table[script] then -- ensure that code-script does not use a suppressed script if in_array (code, suppressed_table[script]) then return code, nil, nil, nil, nil, table.concat ({'script: ', script, ' not supported for code: ', code}); -- language code ok, script is suppressed for this code end end if is_set (region) then if is_set (args_region) then return code, nil, nil, nil, nil, 'redundant region tag'; -- both code with region and |region= not allowed end else region = args_region or ''; -- use args.region if provided end if is_set (region) then region = region:lower(); -- ensure that we use and return lower case version of this if not region_table[region] then return code, script, nil, nil, nil, table.concat ({'unrecognized region: ', region, ' for code: ', code}); end end if is_set (variant) then if is_set (args_variant) then return code, nil, nil, nil, nil, 'redundant variant tag'; -- both code with variant and |variant= not allowed end else variant = args_variant or ''; -- use args.variant if provided end if is_set (variant) then variant = variant:lower(); -- ensure that we use and return lower case version of this if not variant_table[variant] then -- make sure variant is valid return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant}); end -- does this duplicate/replace tests in lang() and lang_xx()? if is_set (script) then -- if script set it must be part of the 'prefix' if not in_array (table.concat ({code, '-', script}), variant_table[variant]['prefixes']) then return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-script pair: ', code, '-', script}); end elseif is_set (region) then -- if region set, there are some prefixes that require lang code and region (en-CA-newfound) if not in_array (code, variant_table[variant]['prefixes']) then -- first see if lang code is all that's required (en-oxendict though en-GB-oxendict is preferred) if not in_array (table.concat ({code, '-', region}), variant_table[variant]['prefixes']) then -- now try for lang code and region (en-CA-newfound) return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code-region pair: ', code, '-', region}); end end else -- cheap way to determine if there are prefixes; fonipa and others don't have prefixes; # operator always returns 0 if variant_table[variant]['prefixes'][1] and not in_array (code, variant_table[variant]['prefixes']) then return code, script, region, nil, nil, table.concat ({'unrecognized variant: ', variant, ' for code: ', code}); end end end if is_set (private) then private = private:lower(); -- ensure that we use and return lower case version of this if not override_table[table.concat ({code, '-x-', private})] then -- make sure private tag is valid; note that index return code, script, region, nil, nil, table.concat ({'unrecognized private tag: ', private}); end end return code, script, region, variant, private, nil; -- return the good bits; make sure that msg is nil end --[[--------------------------< M A K E _ E R R O R _ M S G >-------------------------------------------------- assembles an error message from template name, message text, help link, and error category. ]] local function make_error_msg (msg, args, template) local out = {}; local category; if 'Transl' == template then category = 'Transl'; else category = 'Lang and lang-xx' end table.insert (out, table.concat ({'[', args.text or 'undefined', '] '})); -- for error messages output args.text if available table.insert (out, table.concat ({'<span style=\"color:#d33\">Error: {{', template, '}}: '})); table.insert (out, msg); table.insert (out, table.concat ({' ([[:Category:', category, ' template errors|help]])'})); table.insert (out, '</span>'); if (0 == namespace or 10 == namespace) and not args.nocat then -- categorize in article space (and template space to take care of broken usages) table.insert (out, table.concat ({'[[Category:', category, ' template errors]]'})); end return table.concat (out); end --[=[-------------------------< M A K E _ W I K I L I N K >---------------------------------------------------- Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an empty string. ]=] local function make_wikilink (link, display) if is_set (link) then if is_set (display) then return table.concat ({'[[', link, '|', display, ']]'}); else return table.concat ({'[[', link, ']]'}); end else return ''; end end --[[--------------------------< D I V _ M A R K U P _ A D D >-------------------------------------------------- adds <i> and </i> tags to list-item text or to implied <p>..</p> text. mixed not supported ]] local function div_markup_add (text, style) local implied_p = {}; if text:find ('^\n[%*:;#]') then -- look for list markup; list markup must begin at start of text if 'italic' == style then return text:gsub ('(\n[%*:;#]+)([^\n]+)', '%1<i>%2</i>'); -- insert italic markup at each list item else return text; end end if text:find ('\n+') then -- look for any number of \n characters in text text = text:gsub ('([^\n])\n([^\n])', '%1 %2'); -- replace single newline characters with a space character which mimics mediawiki if 'italic' == style then text = text:gsub('[^\n]+', '<p><i>%1</i></p>'); -- insert p and italic markup tags at each impled p (two or more consecutive '\n\n' sequences) else text = text:gsub ('[^\n]+', '<p>%1</p>'); -- insert p markup at each impled p text = text:gsub ('\n', ''); -- strip newline characters end end return text; end --[[--------------------------< T I T L E _ W R A P P E R _ M A K E >------------------------------------------ makes a <span title="<title text>"><content_text></span> or <div title="<title text>"><content_text></div> where <title text> is in the tool-tip in the wiki's local language and <content_text> is non-local-language text in html markup. This because the lang= attibute applies to the content of its enclosing tag. <tag> holds a string 'div' or 'span' used to choose the correct wrapping tag ]] local function title_wrapper_make (title_text, content_text, tag) local wrapper_t = {}; table.insert (wrapper_t, table.concat ({'<', tag})); -- open opening wrapper tag table.insert (wrapper_t, ' title=\"'); -- begin title attribute table.insert (wrapper_t, title_text); -- add <title_text> table.insert (wrapper_t, '\">'); -- end title attribute and close opening wrapper tag table.insert (wrapper_t, content_text); -- add <content_text> table.insert (wrapper_t, table.concat ({'</', tag, '>'})); -- add closing wrapper tag return table.concat (wrapper_t); -- make a big string and done end --[[--------------------------< M A K E _ T E X T _ H T M L >-------------------------------------------------- Add the html markup to text according to the type of content that it is: <span> or <i> tags for inline content or <div> tags for block content The lang= attribute also applies to the content of the tag where it is placed so this is wrong because 'Spanish language text' is English: <i lang="es" title="Spanish language text">casa</i> should be: <span title="Spanish language text"><i lang="es">casa</i></span> or for <div>...</div>: <div title="Spanish language text"><div lang="es"><spanish-language-text></div></div> ]] local function make_text_html (code, text, tag, rtl, style, size, language) local html_t = {}; local style_added = ''; local wrapper_tag = tag; -- <tag> gets modified so save a copy for use when/if we create a wrapper span or div if text:match ('^%*') then table.insert (html_t, '&#42;'); -- move proto language text prefix outside of italic markup if any; use numeric entity because plain splat confuses MediaWiki text = text:gsub ('^%*', ''); -- remove the splat from the text end if 'span' == tag then -- default html tag for inline content if 'italic' == style then -- but if italic tag = 'i'; -- change to <i> tags end else -- must be div so go text = div_markup_add (text, style); -- handle implied <p>, implied <p> with <i>, and list markup (*;:#) with <i> end table.insert (html_t, table.concat ({'<', tag})); -- open the <i>, <span>, or <div> html tag code = code:gsub ('%-x%-.*', ''); -- strip private use subtag from code tag because meaningless outside of wikipedia table.insert (html_t, table.concat ({' lang="', code, '\"'})); -- add language attribute if (rtl or unicode.is_rtl(text)) and ('ltr' == this_wiki_lang_dir) then -- text is right-to-left on a left-to-right wiki table.insert (html_t, ' dir="rtl"'); -- add direction attribute for right-to-left languages elseif not (rtl or unicode.is_rtl(text)) and ('rtl' == this_wiki_lang_dir) then -- text is left-to-right on a right-to-left wiki table.insert (html_t, ' dir="ltr"'); -- add direction attribute for left-to-right languages end if 'normal' == style then -- when |italic=no table.insert (html_t, ' style=\"font-style: normal;'); -- override external markup, if any style_added = '\"'; -- remember that style attribute added and is not yet closed end if is_set (size) then -- when |size=<something> if is_set (style_added) then table.insert (html_t, table.concat ({' font-size: ', size, ';'})); -- add when style attribute already inserted else table.insert (html_t, table.concat ({' style=\"font-size: ', size, ';'})); -- create style attribute style_added = '\"'; -- remember that style attribute added and is not yet closed end end table.insert (html_t, table.concat ({style_added, '>'})); -- close the opening html tag table.insert (html_t, text); -- insert the text table.insert (html_t, table.concat ({'</', tag, '>'})); -- close the 'text' <i>, <span>, or <div> html tag if is_set (language) then -- create a <title_text> string for the title= attribute in a wrapper span or div local title_text; if 'zxx' == code then -- special case for this tag 'no linguistic content' title_text = table.concat ({language, ' text'}); -- not a language so don't use 'language' in title text elseif mw.ustring.find (language, 'languages', 1, true) then title_text = table.concat ({language, ' collective text'}); -- for collective languages else title_text = table.concat ({language, '-language text'}); -- for individual languages end return title_wrapper_make (title_text, table.concat (html_t), wrapper_tag); else return table.concat (html_t); end end --[=[-------------------------< M A K E _ C A T E G O R Y >---------------------------------------------------- For individual language, <language>, returns: [[Category:Articles containing <language>-language text]] for English: [[Category:Articles containing explicitly cited English-language text]] for ISO 639-2 collective languages (and for 639-1 bh): [[Category:Articles with text in <language> languages]] ]=] local function make_category (code, language_name, nocat, name_get) local cat = {}; local retval; if ((0 ~= namespace) or nocat) and not name_get then -- only categorize in article space return ''; -- return empty string for concatenation end if mw.ustring.find (language_name, 'languages', 1, true) then return table.concat ({'[[Category:Articles with text in ', language_name, ']]'}); end table.insert (cat, '[[Category:Articles containing '); if this_wiki_lang_tag == code then table.insert (cat, 'explicitly cited ' .. language_name); -- unique category name for the local language else table.insert (cat, language_name); end table.insert (cat, '-language text]]'); return table.concat (cat); end --[[--------------------------< M A K E _ T R A N S L I T >---------------------------------------------------- return translit <i lang=xx-Latn>...</i> where xx is the language code; else return empty string The value |script= is not used in {{transl}} for this purpose; instead it uses |code. Because language scripts are listed in the {{transl}} switches they are included in the data tables. The script parameter is introduced at {{Language with name and transliteration}}. If |script= is set, this function uses it in preference to code. To avoid confusion, in this module and the templates that use it, the transliteration script parameter is renamed to be |translit-script= (in this function, tscript) This function is used by both lang_xx() and transl() lang_xx() always provides code, language_name, and translit; may provide tscript; never provides style transl() always provides language_name, translit, and one of code or tscript, never both; always provides style For {{transl}}, style only applies when a language code is provided ]] local function make_translit (code, language_name, translit, std, tscript, style) local title; local out_t = {}; local title_t = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards local title_text = ''; -- tool tip text for title= attribute std = std and std:lower(); -- lower case for table indexing if not is_set (std) and not is_set (tscript) then -- when neither standard nor script specified title_text = language_name; -- write a generic tool tip if not mw.ustring.find (language_name, 'languages', 1, true) then -- collective language names (plural 'languages' is part of the name) title_text = title_text .. '-language'; -- skip this text (individual and macro languages only) end title_text = title_text .. ' romanization'; -- finish the tool tip; use romanization when neither script nor standard supplied elseif is_set (std) and is_set (tscript) then -- when both are specified if title_t[std] then -- and if standard is legitimate if title_t[std][tscript] then -- and if script for that standard is legitimate if script_table[tscript] then title_text = title_text .. table.concat ({title_t[std][tscript:lower()], ' (', script_table[tscript], ' script) transliteration'}); -- add the appropriate text to the tool tip else title_text = title_text .. title_t[std]['default']; -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard? end else title_text = title_text .. title_t[std]['default']; -- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard? end else return ''; -- invalid standard, setup for error message end elseif is_set (std) then -- translit-script not set, use language code if not title_t[std] then return ''; end -- invalid standard, setup for error message if title_t[std][code] then -- if language code is in the table (transl may not provide a language code) title_text = title_text .. table.concat ({title_t[std][code:lower()], ' (', language_name, ' language) transliteration'}); -- add the appropriate text to the tool tip else -- code doesn't match title_text = title_text .. title_t[std]['default']; -- so use the standard's default end else -- here if translit-script set but translit-std not set if title_t['no_std'][tscript] then title_text = title_text .. title_t['no_std'][tscript]; -- use translit-script if set elseif title_t['no_std'][code] then title_text = title_text .. title_t['no_std'][code]; -- use language code else if is_set (tscript) then title_text = title_text .. table.concat ({language_name, '-script transliteration'}); -- write a script tool tip elseif is_set (code) then if not mw.ustring.find (language_name, 'languages', 1, true) then -- collective language names (plural 'languages' is part of the name) title_text = title_text .. '-language'; -- skip this text (individual and macro languages only) end title_text = title_text .. ' transliteration'; -- finish the tool tip else title_text = title_text .. ' transliteration'; -- generic tool tip (can we ever get here?) end end end local close_tag; if is_set (code) then -- when a language code is provided (always with {{lang-xx}} templates, not always with {{transl}}) if not style then -- nil for the default italic style table.insert (out_t, "<i lang=\""); -- so use <i> tag close_tag = '</i>'; -- tag to be used when closing else table.insert (out_t, table.concat ({'<span style=\"font-style: ', style, '\" lang=\"'})); -- non-standard style, construct a span tag for it close_tag = '</span>'; -- tag to be used when closing end table.insert (out_t, code); table.insert (out_t, "-Latn\">"); -- transliterations are always Latin script else table.insert (out_t, "<span>"); -- when no language code: no lang= attribute, not italic ({{transl}} only) close_tag = '</span>'; end table.insert (out_t, translit); -- add the translit text table.insert (out_t, close_tag); -- and add the appropriate </i> or </span> if '' == title_text then -- when there is no need for a tool-tip return table.concat (out_t); -- make a string and done else return title_wrapper_make (title_text, table.concat (out_t), 'span'); -- wrap with a tool-tip span and don end end --[[--------------------------< V A L I D A T E _ T E X T >---------------------------------------------------- This function checks the content of args.text and returns empty string if nothing is amiss else it returns an error message. The tests are for empty or missing text and for improper or disallowed use of apostrophe markup. Italic rendering is controlled by the |italic= template parameter so italic markup should never appear in args.text either as ''itself'' or as '''''bold italic''''' unless |italic=unset or |italic=invert. ]] local function validate_text (template, args) if not is_set (args.text) then return make_error_msg ('no text', args, template); end if args.text:find ("%f[\']\'\'\'\'%f[^\']") or args.text:find ("\'\'\'\'\'[\']+") then -- because we're looking, look for 4 appostrophes or 6+ appostrophes return make_error_msg ('text has malformed markup', args, template); end local style = args.italic; if ('unset' ~= style) and ('invert' ~=style) then if args.text:find ("%f[\']\'\'%f[^\']") or args.text:find ("%f[\']\'\'\'\'\'%f[^\']") then -- italic but not bold, or bold italic return make_error_msg ('text has italic markup', args, template); end end end --[[--------------------------< R E N D E R _ M A I N T >------------------------------------------------------ render mainenance messages and categories ]] local function render_maint(nocat) local maint = {}; if 0 < #maint_msgs then -- when there are maintenance messages table.insert (maint, table.concat ({'<span class="lang-comment" style="font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;">'})); -- opening <span> tag for _, msg in ipairs (maint_msgs) do table.insert (maint, table.concat ({msg, ' '})); -- add message strings end table.insert (maint, '</span>'); -- close the span end if (0 < #maint_cats) and (0 == namespace) and not nocat then -- when there are maintenance categories; article namespace only for _, cat in ipairs (maint_cats) do table.insert (maint, table.concat ({'[[Category:', cat, ']]'})); -- format and add the categories end end return table.concat (maint); end --[[--------------------------< P R O T O _ P R E F I X >------------------------------------------------------ for proto languages, text is prefixed with a splat. We do that here as a flag for make_text_html() so that a splat will be rendered outside of italic markup (if used). If the first character in text here is already a splat, we do nothing proto_param is boolean or nil; true adds splat prefix regardless of language name; false removes and / or inhibits regardless of language name; nil does nothing; presumes that the value in text is correct but removes extra splac ]] local function proto_prefix (text, language_name, proto_param) if false == proto_param then -- when forced by |proto=no return text:gsub ('^%**', ''); -- return text without splat prefix regardless of language name or existing splat prefix in text elseif (language_name:find ('^Proto%-') or (true == proto_param)) then -- language is a proto or forced by |proto=yes return text:gsub ('^%**', '*'); -- prefix proto-language text with a splat; also removes duplicate prefixing splats end return text:gsub ('^%*+', '*'); -- return text unmolested except multiple splats reduced to one splat end --[[--------------------------< H A S _ P O E M _ T A G >------------------------------------------------------ looks for a poem strip marker in text; returns true when found; false else auto-italic detection disabled when text has poem stripmarker because it is not possible for this code to know the content that will replace the stripmarker. ]] local function has_poem_tag (text) return text:find ('\127[^\127]*UNIQ%-%-poem%-[%a%d]+%-QINU[^\127]*\127') and true or false; end --[[--------------------------< H T M L _ T A G _ S E L E C T >------------------------------------------------ Inspects content of and selectively trims text. Returns text and the name of an appropriate html tag for text. If text contains: \n\n text has implied <p>..</p> tags - trim leading and trailing whitespace and return If text begins with list markup: \n* unordered \n; definition \n: definition \n# ordered trim all leading whitespace except \n and trim all trailing whitespace If text contains <poem>...</poem> stripmarker, return text unmodified and choose <div>..</div> tags because the stripmarker is replaced with text wrapped in <div>..</div> tags. ]] local function html_tag_select (text) local tag; if has_poem_tag (text) then -- contains poem stripmarker (we can't know the content of that) tag = 'div'; -- poem replacement is in div tags so lang must use div tags elseif mw.text.trim (text):find ('\n\n+') then -- contains implied p tags text = mw.text.trim (text); -- trim leading and trailing whitespace characters tag = 'div'; -- must be div because span may not contain p tags (added later by MediaWiki); poem replacement is in div tags elseif text:find ('\n[%*:;%#]') then -- if text has list markup text = text:gsub ('^[\t\r\f ]*', ''):gsub ('%s*$', ''); -- trim all whitespace except leading newline character '\n' tag = 'div'; -- must be div because span may not contain ul, dd, dl, ol tags (added later by MediaWiki) else text = mw.text.trim (text); -- plain text tag = 'span'; -- so span is fine end return text, tag; end --[[--------------------------< V A L I D A T E _ P R O T O >-------------------------------------------------- validates value assigned to |proto=; permitted values are yes and no; yes returns as true, no returns as false, empty string (or parameter omitted) returns as nil; any other value returns as nil with a second return value of true indicating that some other value has been assigned to |proto= ]] local function validate_proto (proto_param) if 'yes' == proto_param then return true; elseif 'no' == proto_param then return false; elseif is_set (proto_param) then return nil, true; -- |proto= something other than 'yes' or 'no' else return nil; -- missing or empty end end --[[--------------------------< L A N G U A G E _ N A M E _ G E T >-------------------------------------------- common function to return language name from the data set according to IETF tag returns language name if found in data tables; nil else ]] local function language_name_get (ietf, code, cat) ietf = ietf:lower(); -- ietf:lower() because format_ietf_tag() returns mixed case local name; -- remains nil if not found if override_table[ietf] then -- look for whole IETF tag in override table name = override_table[ietf]; elseif override_table[code] then -- not there so try basic language tag name = override_table[code]; elseif lang_table[code] then -- shift to iana active tag/name table name = lang_table[code]; elseif lang_dep_table[code] then -- try the iana deprecated tag/name table name = lang_dep_table[code]; end if lang_dep_table[code] and cat then -- because deprecated code may have been overridden to en.wiki preferred name table.insert (maint_cats, table.concat ({'Lang and lang-xx using deprecated ISO 639 codes|', code})); table.insert (maint_msgs, table.concat ({'code: ', code, ' is deprecated'})); end return name; -- name from data tables or nil end --[[--------------------------< _ L A N G >-------------------------------------------------------------------- entry point for {{lang}} there should be no reason to set parameters in the {{lang}} {{#invoke:}} <includeonly>{{#invoke:lang|lang}}</includeonly> parameters are received from the template's frame (parent frame) ]] local function _lang (args) local out = {}; local language_name; -- used to make category names local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set local subtags = {}; -- IETF subtags script, region, variant, and private local code; -- the language code local msg; -- for error messages local tag = 'span'; -- initial value for make_text_html() local template = args.template or 'Lang'; validate_cat_args (args); -- determine if categorization should be suppressed if args[1] and args.code then return make_error_msg ('conflicting: {{{1}}} and |code=', args, template); else args.code = args[1] or args.code; -- prefer args.code end if args[2] and args.text then return make_error_msg ('conflicting: {{{2}}} and |text=', args, template); else args.text = args[2] or args.text; -- prefer args.text end msg = validate_text (template, args); -- ensure that |text= is set if is_set (msg) then -- msg is an already-formatted error message return msg; end args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag if msg then return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template); end code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code); -- |script=, |region=, |variant= not supported because they should be part of args.code ({{{1}}} in {{lang}}) if msg then return make_error_msg ( msg, args, template); end args.italic, msg = validate_italic (args); if msg then return make_error_msg (msg, args, template); end if nil == args.italic then -- nil when |italic= absent or not set or |italic=default; args.italic controls if ('latn' == subtags.script) or -- script is latn (this_wiki_lang_tag ~= code and not is_set (subtags.script) and not has_poem_tag (args.text) and unicode.is_Latin (args.text)) then -- text not this wiki's language, no script specified and not in poem markup but is wholly latn script (auto-italics) args.italic = 'italic'; -- DEFAULT for {{lang}} templates is upright; but if latn script set for font-style:italic else args.italic = 'inherit'; -- italic not set; script not latn; inherit current style end end if is_set (subtags.script) then -- if script set, override rtl setting if in_array (subtags.script, lang_data.rtl_scripts) then args.rtl = true; -- script is an rtl script else args.rtl = false; -- script is not an rtl script end end args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant if 'invert' == args.italic and 'span' == tag then -- invert only supported for in-line content args.text = invert_italics (args.text) end args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, language_name)); table.insert (out, make_category (code, language_name, args.nocat)); table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories return table.concat (out); -- put it all together and done end --[[--------------------------< L A N G >---------------------------------------------------------------------- entry point for {{lang}} there should be no reason to set parameters in the {{lang}} {{#invoke:}} <includeonly>{{#invoke:lang|lang}}</includeonly> parameters are received from the template's frame (parent frame) ]] local function lang (frame) local args = getArgs (frame, { -- this code so that we can detect and handle wiki list markup in text valueFunc = function (key, value) if 2 == key or 'text' == key then -- the 'text' parameter; do not trim wite space return value; -- return untrimmed 'text' elseif value then -- all other values: if the value is not nil value = mw.text.trim (value); -- trim whitespace if '' ~= value then -- empty string when value was only whitespace return value; end end return nil; -- value was empty or contained only whitespace end -- end of valueFunc }); return _lang (args); end --[[--------------------------< L A N G _ X X >---------------------------------------------------------------- For the {{lang-xx}} templates, the only parameter required to be set in the template is the language code. All other parameters can, usually should, be written in the template call. For {{lang-xx}} templates for languages that can have multiple writing systems, it may be appropriate to set |script= as well. For each {{lang-xx}} template choose the appropriate entry-point function so that this function knows the default styling that should be applied to text. For normal, upright style: <includeonly>{{#invoke:lang|lang_xx_inherit|code=xx}}</includeonly> For italic style: <includeonly>{{#invoke:lang|lang_xx_italic|code=xx}}</includeonly> All other parameters should be received from the template's frame (parent frame) Supported parameters are: |code = (required) the IANA language code |script = IANA script code; especially for use with languages that use multiple writing systems |region = IANA region code |variant = IANA variant code |text = (required) the displayed text in language specified by code |link = boolean false ('no') does not link code-spcified language name to associated language article |rtl = boolean true ('yes') identifies the language specified by code as a right-to-left language |nocat = boolean true ('yes') inhibits normal categorization; error categories are not affected |cat = boolian false ('no') opposite form of |nocat= |italic = boolean true ('yes') renders displayed text in italic font; boolean false ('no') renders displayed text in normal font; not set renders according to initial_style_state |lit = text that is a literal translation of text |label = 'none' to suppress all labeling (language name, 'translit.', 'lit.') any other text replaces language-name label - automatic wikilinking disabled for those {{lang-xx}} templates that support transliteration (those templates where |text= is not entirely latn script): |translit = text that is a transliteration of text |translit-std = the standard that applies to the transliteration |translit-script = ISO 15924 script name; falls back to code For {{lang-xx}}, the positional parameters are: {{{1}}} text {{{2}}} transliterated text {{{3}}} literal translation text no other positional parameters are allowed ]] local function _lang_xx (args) local out = {}; local language_name; -- used to make display text, article links local category_name; -- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set local subtags = {}; -- IETF subtags script, region, and variant local code; -- the language code local translit_script_name; -- name associated with IANA (ISO 15924) script code local translit; local translit_title; local msg; -- for error messages local tag = 'span'; -- initial value for make_text_html() local template = args.template or 'Lang-xx'; if args[1] and args.text then return make_error_msg ('conflicting: {{{1}}} and |text=', args, template); else args.text = args[1] or args.text; -- prefer args.text end msg = validate_text (template, args); -- ensure that |text= is set, does not contain italic markup and is protected from improper bolding if is_set (msg) then return msg; end args.text, tag = html_tag_select (args.text); -- inspects text; returns appropriate html tag with text trimmed accordingly if args[2] and args.translit then return make_error_msg ('conflicting: {{{2}}} and |translit=', args, template); else args.translit = args[2] or args.translit -- prefer args.translit end if args[3] and (args.translation or args.lit) then return make_error_msg ('conflicting: {{{3}}} and |lit= or |translation=', args, template); elseif args.translation and args.lit then return make_error_msg ('conflicting: |lit= and |translation=', args, template); else args.translation = args[3] or args.translation or args.lit; -- prefer args.translation end if args.links and args.link then return make_error_msg ('conflicting: |links= and |link=', args, template); else args.link = args.link or args.links; -- prefer args.link end validate_cat_args (args); -- determine if categorization should be suppressed args.rtl = args.rtl == 'yes'; -- convert to boolean: 'yes' -> true, other values -> false code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code, args.script, args.region, args.variant); -- private omitted because private if msg then -- if an error detected then there is an error message return make_error_msg (msg, args, template); end args.italic, msg = validate_italic (args); if msg then return make_error_msg (msg, args, template); end if nil == args.italic then -- args.italic controls if is_set (subtags.script) then if 'latn' == subtags.script then args.italic = 'italic'; -- |script=Latn; set for font-style:italic else args.italic = initial_style_state; -- italic not set; script is not latn; set for font-style:<initial_style_state> end else args.italic = initial_style_state; -- here when |italic= and |script= not set; set for font-style:<initial_style_state> end end if is_set (subtags.script) then -- if script set override rtl setting if in_array (subtags.script, lang_data.rtl_scripts) then args.rtl = true; -- script is an rtl script else args.rtl = false; -- script is not an rtl script end end args.proto, msg = validate_proto (args.proto); -- return boolean, or nil, or nil and error message flag if msg then return make_error_msg (table.concat ({'invalid |proto=: ', args.proto}), args, template); end args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles language_name = language_name_get (args.code, code, true); -- get language name; try ietf tag first, then code w/o variant then code w/ variant category_name = language_name; -- category names retain IANA parenthetical diambiguators (if any) language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them if args.label then if 'none' ~= args.label then table.insert (out, table.concat ({args.label, ': '})); -- custom label end else if 'no' == args.link then table.insert (out, language_name); -- language name without wikilink else if mw.ustring.find (language_name, 'languages', 1, true) then table.insert (out, make_wikilink (language_name)); -- collective language name uses simple wikilink elseif lang_data.article_name[code] then table.insert (out, make_wikilink (lang_data.article_name[code], language_name)); -- language name with wikilink from override data else table.insert (out, make_wikilink (language_name .. ' language', language_name)); -- language name with wikilink end end table.insert (out, ': '); -- separator end if 'invert' == args.italic then args.text = invert_italics (args.text) end args.text = proto_prefix (args.text, language_name, args.proto); -- prefix proto-language text with a splat table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, ('none' == args.label) and language_name or nil)) if is_set (args.translit) and not unicode.is_Latin (args.text) then -- transliteration (not supported in {{lang}}); not supported when args.text is wholly latn text (this is an imperfect test) table.insert (out, ', '); -- comma to separate text from translit if 'none' ~= args.label then table.insert (out, '<small>'); if script_table[args['translit-script']] then -- when |translit-script= is set, try to use the script's name translit_script_name = script_table[args['translit-script']]; else translit_script_name = language_name; -- fall back on language name end translit_title = mw.title.makeTitle (0, table.concat ({'Romanization of ', translit_script_name})); -- make a title object if translit_title.exists and ('no' ~= args.link) then table.insert (out, make_wikilink ('Romanization of ' .. translit_script_name or language_name, 'romanized') .. ':'); -- make a wikilink if there is an article to link to else table.insert (out, 'romanized:'); -- else plain text end table.insert (out, '&nbsp;</small>'); -- close the small tag end translit = make_translit (args.code, language_name, args.translit, args['translit-std'], args['translit-script']) if is_set (translit) then table.insert (out, translit); else return make_error_msg (table.concat ({'invalid translit-std: \'', args['translit-std'] or '[missing]'}), args, template); end end if is_set (args.translation) then -- translation (not supported in {{lang}}) table.insert (out, ', '); if 'none' ~= args.label then table.insert (out, '<small>'); if 'no' == args.link then table.insert (out, '<abbr title="literal translation">lit.</abbr>'); else table.insert (out, make_wikilink ('Literal translation', 'lit.')); end table.insert (out, "&thinsp;</small>"); end table.insert (out, table.concat ({'&#39;', args.translation, '&#39;'})); -- use html entities to avoid wiki markup confusion end table.insert (out, make_category (code, category_name, args.nocat)); table.insert (out, render_maint(args.nocat)); -- maintenance messages and categories return table.concat (out); -- put it all together and done end --[[--------------------------< L A N G _ X X _ A R G S _ G E T >---------------------------------------------- common function to get args table from {{lang-??}} templates returns table of args ]] local function lang_xx_args_get (frame) local args = getArgs(frame, { parentFirst= true, -- parameters in the template override parameters set in the {{#invoke:}} valueFunc = function (key, value) if 1 == key then -- the 'text' parameter; do not trim wite space return value; -- return untrimmed 'text' elseif value then -- all other values: if the value is not nil value = mw.text.trim (value); -- trim whitespace if '' ~= value then -- empty string when value was only whitespace return value; end end return nil; -- value was empty or contained only whitespace end -- end of valueFunc }); return args; end --[[--------------------------< L A N G _ X X _ I T A L I C >-------------------------------------------------- Entry point for those {{lang-xx}} templates that call lang_xx_italic(). Sets the initial style state to italic. ]] local function lang_xx_italic (frame) local args = lang_xx_args_get (frame); initial_style_state = 'italic'; return _lang_xx (args); end --[[--------------------------< _ L A N G _ X X _ I T A L I C >------------------------------------------------ Entry point ffrom another module. Sets the initial style state to italic. ]] local function _lang_xx_italic (args) initial_style_state = 'italic'; return _lang_xx (args); end --[[--------------------------< L A N G _ X X _ I N H E R I T >------------------------------------------------ Entry point for those {{lang-xx}} templates that call lang_xx_inherit(). Sets the initial style state to inherit. ]] local function lang_xx_inherit (frame) local args = lang_xx_args_get (frame); initial_style_state = 'inherit'; return _lang_xx (args); end --[[--------------------------< _ L A N G _ X X _ I N H E R I T >---------------------------------------------- Entry point from another module. Sets the initial style state to inherit. ]] local function _lang_xx_inherit (args) initial_style_state = 'inherit'; return _lang_xx (args); end --[[--------------------------< _ I S _ I E T F _ T A G >------------------------------------------------------ Returns true when a language name associated with IETF language tag exists; nil else. IETF language tag must be valid. All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function. Module entry point from another module ]] local function _is_ietf_tag (tag) -- entry point when this module is require()d into another local c, s, r, v, p, err; -- code, script, region, variant, private, error message c, s, r, v, p, err = get_ietf_parts (tag); -- disassemble tag into constituent part and validate return ((c and not err) and true) or nil; -- return true when code portion has a value without error message; nil else end --[[--------------------------< I S _ I E T F _ T A G >-------------------------------------------------------- Module entry point from an {{#invoke:}} ]] local function is_ietf_tag (frame) return _is_ietf_tag (getArgs (frame)[1]); -- args[1] is the ietf language tag to be tested; also get parent frame end --[[--------------------------< I S _ I E T F _ T A G _ F R A M E >-------------------------------------------- Module entry point from an {{#invoke:}}; same as is_ietf_tag() except does not get parameters from the parent (template) frame. This function not useful when called by {{lang|fn=is_ietf_tag_frame|<tag>}} because <tag> is in the parent frame. ]] local function is_ietf_tag_frame (frame) return _is_ietf_tag (getArgs (frame, {frameOnly = true,})[1]); -- args[1] is the ietf language tag to be tested; do not get parent frame end --[[--------------------------< _ N A M E _ F R O M _ T A G >-------------------------------------------------- Returns language name associated with IETF language tag if valid; error message else. All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function. Set invoke's |link= parameter to yes to get wikilinked version of the language name. Module entry point from another module ]] local function _name_from_tag (args) local subtags = {}; -- IETF subtags script, region, variant, and private local raw_code = args[1]; -- save a copy of the input IETF subtag local link = 'yes' == args['link']; -- make a boolean local label = args.label; local code; -- the language code local msg; -- gets an error message if IETF language tag is malformed or invalid local language_name = ''; code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code); if msg then local template = (args['template'] and table.concat ({'{{', args['template'], '}}: '})) or ''; -- make template name (if provided by the template) return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'}); end raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private language_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant language_name = language_name:gsub ('%s+%b()', ''); -- remove IANA parenthetical disambiguators or qualifiers from names that have them if link then -- when |link=yes, wikilink the language name if mw.ustring.find (language_name, 'languages', 1, true) then language_name = make_wikilink (language_name, label); -- collective language name uses simple wikilink elseif lang_data.article_name[code] then language_name = make_wikilink (lang_data.article_name[code], label or language_name); -- language name with wikilink from override data else language_name = make_wikilink (language_name .. ' language', label or language_name); -- language name with wikilink end end return language_name; end --[[--------------------------< N A M E _ F R O M _ T A G >---------------------------------------------------- Module entry point from an {{#invoke:}} ]] local function name_from_tag (frame) -- entry point from an {{#invoke:Lang|name_from_tag|<ietf tag>|link=<yes>|template=<template name>}} return _name_from_tag (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame end --[[--------------------------< _ T A G _ F R O M _ N A M E >-------------------------------------------------- Returns the ietf language tag associated with the language name. Spelling of language name must be correct according to the spelling in the source tables. When a standard language name has a parenthetical disambiguator, that disambiguator must be omitted (they are not present in the data name-to-tag tables). Module entry point from another module ]] local function _tag_from_name (args) -- entry point from another module local msg; if args[1] and '' ~= args[1] then local data = mw.loadData ('Module:Lang/tag from name'); -- get the reversed data tables TODO: change when going live local lang = args[1]:lower(); -- allow any-case for the language name (speeling must till be correct) local tag = data.rev_override_table[lang] or data.rev_lang_table[lang] or data.rev_lang_dep_table[lang]; -- get the code; look first in the override then in the standard if tag then return tag, true; -- language name found so return tag and done; second return used by is_lang_name() else msg = 'language: ' .. args[1] .. ' not found' -- language name not found, error message end else msg = 'missing language name' -- language name not provided, error message end local template = ''; if args.template and '' ~= args.template then template = table.concat ({'{{', args['template'], '}}: '}); -- make template name (if provided by the template) end return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'}); end --[[--------------------------< T A G _ F R O M _ N A M E >---------------------------------------------------- Module entry point from an {{#invoke:}} ]] local function tag_from_name (frame) -- entry point from an {{#invoke:Lang|tag_from_name|<language name>|link=<yes>|template=<template name>}} local result, _ = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by is_lang_name() return result; end --[[--------------------------< I S _ L A N G _ N A M E >------------------------------------------------------ Module entry point from an {{#invoke:}} ]] local function is_lang_name (frame) local _, result = _tag_from_name (getArgs(frame)) -- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by tag_from_name() return result and true or nil; end --[[--------------------------< _ T R A N S L >---------------------------------------------------------------- Module entry point from another module ]] local function _transl (args) local title_table = lang_data.translit_title_table; -- table of transliteration standards and the language codes and scripts that apply to those standards local language_name; -- language name that matches language code; used for tool tip local translit; -- transliterated text to display local script; -- IANA script local msg; -- for when called functions return an error message if is_set (args[3]) then -- [3] set when {{transl|code|standard|text}} args.text = args[3]; -- get the transliterated text args.translit_std = args[2] and args[2]:lower(); -- get the standard; lower case for table indexing if not title_table[args.translit_std] then return make_error_msg (table.concat ({'unrecognized transliteration standard: ', args.translit_std}), args, 'Transl'); end else if is_set (args[2]) then -- [2] set when {{transl|code|text}} args.text = args[2]; -- get the transliterated text else if args[1] and args[1]:match ('^%a%a%a?%a?$') then -- args[2] missing; is args[1] a code or is it the transliterated text? return make_error_msg ('no text', args, 'Transl'); -- args[1] is a code so we're missing text else args.text = args[1]; -- args[1] is not a code so we're missing that; assign args.text for error message return make_error_msg ('missing language / script code', args, 'Transl'); end end end if is_set (args[1]) then -- IANA language code used for html lang= attribute; or ISO 15924 script code if args[1]:match ('^%a%a%a?%a?$') then -- args[1] has correct form? args.code = args[1]:lower(); -- use the language/script code; only (2, 3, or 4 alpha characters); lower case because table indexes are lower case else return make_error_msg (table.concat ({'unrecognized language / script code: ', args[1]}), args, 'Transl'); -- invalid language / script code end else return make_error_msg ('missing language / script code', args, 'Transl'); -- missing language / script code so quit end args.italic, msg = validate_italic (args); if msg then return make_error_msg (msg, args, 'Transl'); end if 'italic' == args.italic then -- 'italic' when |italic=yes; because that is same as absent or not set and |italic=default args.italic = nil; -- set to nil; end if override_table[args.code] then -- is code a language code defined in the override table? language_name = override_table[args.code]; elseif lang_table[args.code] then -- is code a language code defined in the standard language code tables? language_name = lang_table[args.code]; elseif lang_dep_table[args.code] then -- is code a language code defined in the deprecated language code tables? language_name = lang_dep_table[args.code]; elseif script_table[args.code] then -- if here, code is not a language code; is it a script code? language_name = script_table[args.code]; script = args.code; -- code was an ISO 15924 script so use that instead args.code = ''; -- unset because not a language code else return make_error_msg (table.concat ({'unrecognized language / script code: ', args.code}), args, 'Transl'); -- invalid language / script code end -- here only when all parameters passed to make_translit() are valid return make_translit (args.code, language_name, args.text, args.translit_std, script, args.italic); end --[[--------------------------< T R A N S L >------------------------------------------------------------------ Module entry point from an {{#invoke:}} ]] local function transl (frame) return _transl (getArgs(frame)); end --[[--------------------------< C A T E G O R Y _ F R O M _ T A G >-------------------------------------------- Returns category name associated with IETF language tag if valid; error message else All code combinations supported by {{lang}} and the {{lang-xx}} templates are supported by this function. Module entry point from another module ]] local function _category_from_tag (args_t) local subtags = {}; -- IETF subtags script, region, variant, and private local raw_code = args_t[1]; -- save a copy of the input IETF subtag local link = 'yes' == args_t.link; -- make a boolean local label = args_t.label; local code; -- the language code local msg; -- gets an error message if IETF language tag is malformed or invalid local category_name = ''; code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code); if msg then local template = (args_t.template and table.concat ({'{{', args_t.template, '}}: '})) or ''; -- make template name (if provided by the template) return table.concat ({'<span style=\"color:#d33\">Error: ', template, msg, '</span>'}); end raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private); -- format to recommended subtag styles; private omitted because private category_name = language_name_get (raw_code, code); -- get language name; try ietf tag first, then code w/o variant then code w/ variant category_name = make_category (code, category_name, nil, true):gsub ('[%[%]]', ''); if link then return table.concat ({'[[:', category_name, ']]'}); else return category_name; end end --[[--------------------------< C A T E G O R Y _ F R O M _ T A G >-------------------------------------------- Module entry point from an {{#invoke:}} ]] local function category_from_tag (frame) -- entry point from an {{#invoke:Lang|category_from_tag|<ietf tag>|template=<template name>}} return _category_from_tag (getArgs (frame)); -- pass-on the args table, nothing else; getArgs() so we also get parent frame end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return { category_from_tag = category_from_tag, lang = lang, -- entry point for {{lang}} lang_xx_inherit = lang_xx_inherit, -- entry points for {{lang-??}} lang_xx_italic = lang_xx_italic, is_ietf_tag = is_ietf_tag, is_ietf_tag_frame = is_ietf_tag_frame, is_lang_name = is_lang_name, tag_from_name = tag_from_name, -- returns ietf tag associated with language name name_from_tag = name_from_tag, -- used for template documentation; possible use in ISO 639 name from code templates transl = transl, -- entry point for {{transl}} _category_from_tag = _category_from_tag, -- entry points when this module is require()d into other modules _lang = _lang, _lang_xx_inherit = _lang_xx_inherit, _lang_xx_italic = _lang_xx_italic, _is_ietf_tag = _is_ietf_tag, get_ietf_parts = get_ietf_parts, _tag_from_name = _tag_from_name, _name_from_tag = _name_from_tag, _transl = _transl, }; c03dbd7d09fd194f4eca087d4ab33846db239885 Module:Unicode data 828 38 75 2024-01-03T21:11:48Z Laggardson 2 Created page with "local p = {} local floor = math.floor local function errorf(level, ...) if type(level) == "number" then return error(string.format(...), level + 1) else -- level is actually the format string. return error(string.format(level, ...), 2) end end local function binary_range_search(codepoint, ranges) local low, mid, high low, high = 1, ranges.length or require "Module:TableTools".length(ranges) while low <= high do mid = floor((low + high) / 2) local range =..." Scribunto text/plain local p = {} local floor = math.floor local function errorf(level, ...) if type(level) == "number" then return error(string.format(...), level + 1) else -- level is actually the format string. return error(string.format(level, ...), 2) end end local function binary_range_search(codepoint, ranges) local low, mid, high low, high = 1, ranges.length or require "Module:TableTools".length(ranges) while low <= high do mid = floor((low + high) / 2) local range = ranges[mid] if codepoint < range[1] then high = mid - 1 elseif codepoint <= range[2] then return range, mid else low = mid + 1 end end return nil, mid end p.binary_range_search = binary_range_search --[[ local function linear_range_search(codepoint, ranges) for i, range in ipairs(ranges) do if range[1] <= codepoint and codepoint <= range[2] then return range end end end --]] -- Load a module by indexing "loader" with the name of the module minus the -- "Module:Unicode data/" part. For instance, loader.blocks returns -- [[Module:Unicode data/blocks]]. If a module cannot be loaded, false will be -- returned. local loader = setmetatable({}, { __index = function (self, key) local success, data = pcall(mw.loadData, "Module:Unicode data/" .. key) if not success then data = false end self[key] = data return data end }) -- For the algorithm used to generate Hangul Syllable names, -- see "Hangul Syllable Name Generation" in section 3.12 of the -- Unicode Specification: -- https://www.unicode.org/versions/Unicode11.0.0/ch03.pdf local name_hooks = { { 0x00, 0x1F, "<control-%04X>" }, -- C0 control characters { 0x7F, 0x9F, "<control-%04X>" }, -- DEL and C1 control characters { 0x3400, 0x4DBF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension A { 0x4E00, 0x9FFF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph { 0xAC00, 0xD7A3, function (codepoint) -- Hangul Syllables local Hangul_data = loader.Hangul local syllable_index = codepoint - 0xAC00 return ("HANGUL SYLLABLE %s%s%s"):format( Hangul_data.leads[floor(syllable_index / Hangul_data.final_count)], Hangul_data.vowels[floor((syllable_index % Hangul_data.final_count) / Hangul_data.trail_count)], Hangul_data.trails[syllable_index % Hangul_data.trail_count] ) end }, -- High Surrogates, High Private Use Surrogates, Low Surrogates { 0xD800, 0xDFFF, "<surrogate-%04X>" }, { 0xE000, 0xF8FF, "<private-use-%04X>" }, -- Private Use -- CJK Compatibility Ideographs { 0xF900, 0xFA6D, "CJK COMPATIBILITY IDEOGRAPH-%04X" }, { 0xFA70, 0xFAD9, "CJK COMPATIBILITY IDEOGRAPH-%04X" }, { 0x17000, 0x187F7, "TANGUT IDEOGRAPH-%04X" }, -- Tangut Ideograph { 0x18800, 0x18AFF, function (codepoint) return ("TANGUT COMPONENT-%03d"):format(codepoint - 0x187FF) end }, { 0x18D00, 0x18D08, "TANGUT IDEOGRAPH-%04X" }, -- Tangut Ideograph Supplement { 0x1B170, 0x1B2FB, "NUSHU CHARACTER-%04X" }, -- Nushu { 0x20000, 0x2A6DF, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension B { 0x2A700, 0x2B738, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension C { 0x2B740, 0x2B81D, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension D { 0x2B820, 0x2CEA1, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension E { 0x2CEB0, 0x2EBE0, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension F -- CJK Compatibility Ideographs Supplement (Supplementary Ideographic Plane) { 0x2F800, 0x2FA1D, "CJK COMPATIBILITY IDEOGRAPH-%04X" }, { 0xE0100, 0xE01EF, function (codepoint) -- Variation Selectors Supplement return ("VARIATION SELECTOR-%d"):format(codepoint - 0xE0100 + 17) end}, { 0x30000, 0x3134A, "CJK UNIFIED IDEOGRAPH-%04X" }, -- CJK Ideograph Extension G { 0xF0000, 0xFFFFD, "<private-use-%04X>" }, -- Plane 15 Private Use { 0x100000, 0x10FFFD, "<private-use-%04X>" } -- Plane 16 Private Use } name_hooks.length = #name_hooks local name_range_cache local function generate_name(data, codepoint) if type(data) == "string" then return data:format(codepoint) else return data(codepoint) end end --[[ -- Checks that the code point is a number and in range. -- Does not check whether code point is an integer. -- Not used local function check_codepoint(funcName, argIdx, val) require 'libraryUtil'.checkType(funcName, argIdx, val, 'number') if codepoint < 0 or 0x10FFFF < codepoint then errorf("Codepoint %04X out of range", codepoint) end end --]] -- https://www.unicode.org/versions/Unicode11.0.0/ch04.pdf, section 4.8 function p.lookup_name(codepoint) -- U+FDD0-U+FDEF and all code points ending in FFFE or FFFF are Unassigned -- (Cn) and specifically noncharacters: -- https://www.unicode.org/faq/private_use.html#nonchar4 if 0xFDD0 <= codepoint and (codepoint <= 0xFDEF or floor(codepoint % 0x10000) >= 0xFFFE) then return ("<noncharacter-%04X>"):format(codepoint) end if name_range_cache -- Check if previously used "name hook" applies to this code point. and codepoint >= name_range_cache[1] and codepoint <= name_range_cache[2] then return generate_name(name_range_cache[3], codepoint) end local range = binary_range_search(codepoint, name_hooks) if range then name_range_cache = range return generate_name(range[3], codepoint) end local data = loader[('names/%03X'):format(codepoint / 0x1000)] if data and data[codepoint] then return data[codepoint] -- Unassigned (Cn) consists of noncharacters and reserved characters. -- The character has been established not to be a noncharacter, -- and if it were assigned, its name would already been retrieved, -- so it must be reserved. else return ("<reserved-%04X>"):format(codepoint) end end --[[ -- No image data modules on Wikipedia yet. function p.lookup_image(codepoint) local data = loader[('images/%03X'):format(codepoint / 0x1000)] if data then return data[codepoint] end end --]] local planes = { [ 0] = "Basic Multilingual Plane"; [ 1] = "Supplementary Multilingual Plane"; [ 2] = "Supplementary Ideographic Plane"; [ 3] = "Tertiary Ideographic Plane"; [14] = "Supplementary Special-purpose Plane"; [15] = "Supplementary Private Use Area-A"; [16] = "Supplementary Private Use Area-B"; } -- Load [[Module:Unicode data/blocks]] if needed and assign it to this variable. local blocks local function block_iter(blocks, i) i = i + 1 local data = blocks[i] if data then -- Unpack doesn't work on tables loaded with mw.loadData. return i, data[1], data[2], data[3] end end -- An ipairs-type iterator generator for the list of blocks. function p.enum_blocks() local blocks = loader.blocks return block_iter, blocks, 0 end function p.lookup_plane(codepoint) local i = floor(codepoint / 0x10000) return planes[i] or ("Plane %u"):format(i) end function p.lookup_block(codepoint) local blocks = loader.blocks local range = binary_range_search(codepoint, blocks) if range then return range[3] else return "No Block" end end function p.get_block_info(name) for i, block in ipairs(loader.blocks) do if block[3] == name then return block end end end function p.is_valid_pagename(pagename) local has_nonws = false for cp in mw.ustring.gcodepoint(pagename) do if (cp == 0x0023) -- # or (cp == 0x005B) -- [ or (cp == 0x005D) -- ] or (cp == 0x007B) -- { or (cp == 0x007C) -- | or (cp == 0x007D) -- } or (cp == 0x180E) -- MONGOLIAN VOWEL SEPARATOR or ((cp >= 0x2000) and (cp <= 0x200A)) -- spaces in General Punctuation block or (cp == 0xFFFD) -- REPLACEMENT CHARACTER then return false end local printable, result = p.is_printable(cp) if not printable then return false end if result ~= "space-separator" then has_nonws = true end end return has_nonws end local function manual_unpack(what, from) if what[from + 1] == nil then return what[from] end local result = {} from = from or 1 for i, item in ipairs(what) do if i >= from then table.insert(result, item) end end return unpack(result) end local function compare_ranges(range1, range2) return range1[1] < range2[1] end -- Creates a function to look up data in a module that contains "singles" (a -- code point-to-data map) and "ranges" (an array containing arrays that contain -- the low and high code points of a range and the data associated with that -- range). -- "loader" loads and returns the "singles" and "ranges" tables. -- "match_func" is passed the code point and either the data or the "dots", and -- generates the final result of the function. -- The varargs ("dots") describes the default data to be returned if there wasn't -- a match. -- In case the function is used more than once, "cache" saves ranges that have -- already been found to match, or a range whose data is the default if there -- was no match. local function memo_lookup(data_module_subpage, match_func, ...) local dots = { ... } local cache = {} local singles, ranges return function (codepoint) if not singles then local data_module = loader[data_module_subpage] singles, ranges = data_module.singles, data_module.ranges end if singles[codepoint] then return match_func(codepoint, singles[codepoint]) end local range = binary_range_search(codepoint, cache) if range then return match_func(codepoint, manual_unpack(range, 3)) end local range, index = binary_range_search(codepoint, ranges) if range then table.insert(cache, range) table.sort(cache, compare_ranges) return match_func(codepoint, manual_unpack(range, 3)) end if ranges[index] then local dots_range if codepoint > ranges[index][2] then dots_range = { ranges[index][2] + 1, ranges[index + 1] and ranges[index + 1][1] - 1 or 0x10FFFF, unpack(dots) } else -- codepoint < range[index][1] dots_range = { ranges[index - 1] and ranges[index - 1][2] + 1 or 0, ranges[index][1] - 1, unpack(dots) } end table.sort(cache, compare_ranges) end return match_func(codepoint) end end -- Get a code point's combining class value in [[Module:Unicode data/combining]], -- and return whether this value is not zero. Zero is assigned as the default -- if the combining class value is not found in this data module. -- That is, return true if character is combining, or false if it is not. -- See https://www.unicode.org/reports/tr44/#Canonical_Combining_Class_Values for -- more information. p.is_combining = memo_lookup( "combining", function (codepoint, combining_class) return combining_class and combining_class ~= 0 or false end, 0) function p.add_dotted_circle(str) return (mw.ustring.gsub(str, ".", function(char) if p.is_combining(mw.ustring.codepoint(char)) then return '◌' .. char end end)) end local lookup_control = memo_lookup( "control", function (codepoint, ccc) return ccc or "assigned" end, "assigned") p.lookup_control = lookup_control function p.is_assigned(codepoint) return lookup_control(codepoint) ~= "unassigned" end function p.is_printable(codepoint) local result = lookup_control(codepoint) return (result == "assigned") or (result == "space-separator"), result end function p.is_whitespace(codepoint) local result = lookup_control(codepoint) return (result == "space-separator"), result end p.lookup_category = memo_lookup( "category", function (codepoint, category) return category end, "Cn") local lookup_script = memo_lookup( "scripts", function (codepoint, script_code) return script_code or 'Zzzz' end, "Zzzz") p.lookup_script = lookup_script function p.get_best_script(str) -- Check type of argument, because mw.text.decode coerces numbers to strings! require "libraryUtil".checkType("get_best_script", 1, str, "string") -- Convert HTML character references (including named character references, -- or character entities) to characters. str = mw.text.decode(str, true) local scripts = {} for codepoint in mw.ustring.gcodepoint(str) do local script = lookup_script(codepoint) -- Ignore "Inherited", "Undetermined", or "Uncoded" scripts. if not (script == "Zyyy" or script == "Zinh" or script == "Zzzz") then scripts[script] = true end end -- If scripts does not contain two or more keys, -- return first and only key (script code) in table. if not next(scripts, next(scripts)) then return next(scripts) end -- else return majority script, or else "Zzzz"? end function p.is_Latin(str) require "libraryUtil".checkType("get_best_script", 1, str, "string") str = mw.text.decode(str, true) -- Search for the leading bytes that introduce the UTF-8 encoding of the -- code points U+0340-U+10FFFF. If they are not found and there is at least -- one Latin-script character, the string counts as Latin, because the rest -- of the characters can only be Zyyy, Zinh, and Zzzz. -- The only scripts found below U+0370 (the first code point of the Greek -- and Coptic block) are Latn, Zyyy, Zinh, and Zzzz. -- See the codepage in the [[UTF-8]] article. if not str:find "[\205-\244]" then for codepoint in mw.ustring.gcodepoint(str) do if lookup_script(codepoint) == "Latn" then return true end end end local Latn = false for codepoint in mw.ustring.gcodepoint(str) do local script = lookup_script(codepoint) if script == "Latn" then Latn = true elseif not (script == "Zyyy" or script == "Zinh" or script == "Zzzz") then return false end end return Latn end -- Checks that a string contains only characters belonging to right-to-left -- scripts, or characters of ignorable scripts. function p.is_rtl(str) require "libraryUtil".checkType("get_best_script", 1, str, "string") str = mw.text.decode(str, true) -- Search for the leading bytes that introduce the UTF-8 encoding of the -- code points U+0580-U+10FFFF. If they are not found, the string can only -- have characters from a left-to-right script, because the first code point -- in a right-to-left script is U+0591, in the Hebrew block. if not str:find "[\214-\244]" then return false end local result = false local rtl = loader.scripts.rtl for codepoint in mw.ustring.gcodepoint(str) do local script = lookup_script(codepoint) if rtl[script] then result = true elseif not (script == "Zyyy" or script == "Zinh" or script == "Zzzz") then return false end end return result end local function get_codepoint(args, arg) local codepoint_string = args[arg] or errorf(2, "Parameter %s is required", tostring(arg)) local codepoint = tonumber(codepoint_string, 16) or errorf(2, "Parameter %s is not a code point in hexadecimal base", tostring(arg)) if not (0 <= codepoint and codepoint <= 0x10FFFF) then errorf(2, "code point in parameter %s out of range", tostring(arg)) end return codepoint end local function get_func(args, arg, prefix) local suffix = args[arg] or errorf(2, "Parameter %s is required", tostring(arg)) suffix = mw.text.trim(suffix) local func_name = prefix .. suffix local func = p[func_name] or errorf(2, "There is no function '%s'", func_name) return func end -- This function allows any of the "lookup" functions to be invoked. The first -- parameter is the word after "lookup_"; the second parameter is the code point -- in hexadecimal base. function p.lookup(frame) local func = get_func(frame.args, 1, "lookup_") local codepoint = get_codepoint(frame.args, 2) local result = func(codepoint) if func == p.lookup_name then -- Prevent code point labels such as <control-0000> from being -- interpreted as HTML tags. result = result:gsub("<", "&lt;") end return result end function p.is(frame) local func = get_func(frame.args, 1, "is_") -- is_Latin and is_valid_pagename take strings. if func == p.is_Latin or func == p.is_valid_pagename or func == p.is_rtl then return (func(frame.args[2])) else -- The rest take code points. local codepoint = get_codepoint(frame.args, 2) return (func(codepoint)) -- Adjust to one result. end end return p d5120752211e56587ed888b32d5a752a82836cc0 Module:Yesno 828 39 76 2024-01-03T21:13:36Z Laggardson 2 Created page with "-- <nowiki> --- Yesno module for processing of boolean-like wikitext input. -- -- It works similarly to the [[wikipedia:Template:Yesno|Yesno Wikipedia -- template]]. This module is a consistent Lua interface for wikitext -- input from templates. -- -- Wikitext markup used by MediaWiki templates only permit -- string parameters like `"0"`, `"yes"`, `"no"` etc. As Lua -- has a boolean primitive type, Yesno converts this -- wikitext into boolean output for Lua t..." Scribunto text/plain -- <nowiki> --- Yesno module for processing of boolean-like wikitext input. -- -- It works similarly to the [[wikipedia:Template:Yesno|Yesno Wikipedia -- template]]. This module is a consistent Lua interface for wikitext -- input from templates. -- -- Wikitext markup used by MediaWiki templates only permit -- string parameters like `"0"`, `"yes"`, `"no"` etc. As Lua -- has a boolean primitive type, Yesno converts this -- wikitext into boolean output for Lua to process. -- -- @script yesno -- @release stable -- @author [[User:Dessamator|Dessamator]] -- @attribution [[wikipedia:User:ATDT|ATDT]] -- @attribution [[wikipedia:User:Mr. Stradivarius|Mr. Stradivarius]] -- @attribution [[wikipedia:Special:PageHistory/Module:Yesno|Other Wikipedia contributors]] -- @see [[wikipedia:Module:Yesno|Original module on -- Wikipedia]] -- @see [[Module:Yesno/testcases|Test cases for this -- module]] -- @param {?boolean|string} value Wikitext boolean-style -- or Lua boolean input. -- * Truthy wikitext input (`'yes'`, `'y'`, `'1'`, -- `'t'` or `'on'`) produces `true` as output. -- * The string representations of Lua's true -- boolean value (`'true'`) also produces `true`. -- * Falsy wikitext input (`'no'`, `'n'`, `'0'`, -- `'f'` or `'off'`) produces `false` as output. -- * The string representation of Lua's false -- boolean value (`'false'`) also produces `false`. -- * Localised text meaning `'yes'` or `'no'` also -- evaluate to `true` or `false` respectively. -- @param[opt] {?boolean|string} default Output to return if -- the Yesno `value` input is unrecognised. -- @return {?boolean} Boolean output corresponding to -- `val`: -- * The strings documented above produce a -- boolean value. -- * A `nil` value produces an output of `nil`. -- As this is falsy, additional logic may be needed -- to treat missing template parameters as truthy. -- * Unrecognised values return the `default` -- parameter. Blank strings are a key example -- of Yesno's unrecognised values and can evaluate -- to `true` if there is a default value. local lower = mw.ustring.lower local msg = mw.message.new local yes = lower(msg('htmlform-yes'):plain()) local no = lower(msg('htmlform-no'):plain()) local en_yes = lower(msg('htmlform-yes'):inLanguage('en'):plain()) local en_no = lower(msg('htmlform-no'):inLanguage('en'):plain()) return function(value, default) value = type(value) == 'string' and lower(value) or value if value == nil then return nil elseif value == true or value == yes or value == en_yes or value == 'y' or value == 'true' or value == 't' or value == 'on' or value == 'enable' or tonumber(value) == 1 then return true elseif value == false or value == no or value == en_no or value == 'n' or value == 'false' or value == 'f' or value == 'off' or value == 'disable' or tonumber(value) == 0 then return false else return default end end -- </nowiki> e342cfbb2046573b83245c0a26dde4b62f8b783c Module:Lang/data 828 40 77 2024-01-03T21:16:06Z Laggardson 2 Created page with "local lang_obj = mw.language.getContentLanguage(); local this_wiki_lang_tag = lang_obj.code; -- get this wiki's language tag --[[--------------------------< L A N G _ N A M E _ T A B L E >------------------------------------------------ primary table of tables that decode: lang -> language tags and names script -> ISO 15924 script tags region -> ISO 3166 region tags variant -> iana registered variant tags suppressed -> map of scripts tags and their assoc..." Scribunto text/plain local lang_obj = mw.language.getContentLanguage(); local this_wiki_lang_tag = lang_obj.code; -- get this wiki's language tag --[[--------------------------< L A N G _ N A M E _ T A B L E >------------------------------------------------ primary table of tables that decode: lang -> language tags and names script -> ISO 15924 script tags region -> ISO 3166 region tags variant -> iana registered variant tags suppressed -> map of scripts tags and their associated language tags all of these data come from separate modules that are derived from the IANA language-subtag-registry file key_to_lower() avoids the metatable trap and sets all keys in the subtables to lowercase. Many language codes have multiple associated names; Module:lang is only concerned with the first name so key_to_lower() only fetches the first name. ]] local function key_to_lower (module, src_type) local out = {}; local source = (('var_sup' == src_type) and require (module)) or mw.loadData (module); -- fetch data from this module; require() avoids metatable trap for variant data if 'var_sup' == src_type then for k, v in pairs (source) do out[k:lower()] = v; -- for variant and suppressed everything is needed end elseif 'lang' == src_type and source.active then -- for ~/iana_languages (active) for k, v in pairs (source.active) do out[k:lower()] = v[1]; -- ignore multiple names; take first name only end elseif 'lang_dep' == src_type and source.deprecated then -- for ~/iana_languages (deprecated) for k, v in pairs (source.deprecated) do out[k:lower()] = v[1]; -- ignore multiple names; take first name only end else -- here for all other sources for k, v in pairs (source) do out[k:lower()] = v[1]; -- ignore multiple names; take first name only end end return out; end local lang_name_table_t = { lang = key_to_lower ('Module:Language/data/iana languages', 'lang'), lang_dep = key_to_lower ('Module:Language/data/iana languages', 'lang_dep'), script = key_to_lower ('Module:Language/data/iana scripts'), -- script keys are capitalized; set to lower region = key_to_lower ('Module:Language/data/iana regions'), -- region keys are uppercase; set to lower variant = key_to_lower ('Module:Language/data/iana variants', 'var_sup'), suppressed = key_to_lower ('Module:Language/data/iana suppressed scripts', 'var_sup'), -- script keys are capitalized; set to lower } --[[--------------------------< I 1 8 N M E D I A W I K I O V E R R I D E >-------------------------------- For internationalization; not used at en.wiki The language names taken from the IANA language-subtag-registry file are given in English. That may not be ideal. Translating ~8,000 language names is also not ideal. MediaWiki maintains (much) shorter lists of language names in most languages for which there is a Wikipedia edition. When desired, Module:Lang can use the MediaWiki language list for the local language. Caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all. When incomplete, MediaWiki's list will 'fall back' to another language (typically English). When that happens add an appropriate entry to the override table below. Caveat lector: the list of MediaWiki language names for your language may not be correct. At en.wiki, the MediaWiki language names do not agree with the IANA language names for these ISO 639-1 tags. Often it is simply spelling differences: bh: IANA: Bihari languages MW: Bhojpuri – the ISO 639-3 tag for Bhojpuri is bho bn: IANA: Bengali MW: Bangla – Bengali is the exonym, Bangla is the endonym dv: IANA: Dhivehi MW: Divehi el: IANA: Modern Greek MW: Greek ht: IANA: Haitian MW: Haitian Creole ky: IANA: Kirghiz MW: Kyrgyz li: IANA: Limburgan MW: Limburgish or: IANA: Oriya MW: Odia os: IANA: Ossetian MW: Ossetic "pa: IANA: Panjabi MW: Punjabi "ps: IANA: Pushto MW: Pashto "to: IANA: Tonga MW: Tongan "ug: IANA: Uighur MW: Uyghur use the override table to override language names that are incorrect for your project To see the list of names that MediaWiki has for your language, enter this in the Debug colsole: =mw.dumpObject (mw.language.fetchLanguageNames ('<tag>', 'all')) (replacing <tag> with the language tag for your language) Use of the MediaWiki language names lists is enabled when media_wiki_override_enable is set to boolean true. ]] local media_wiki_override_enable = false; -- set to true to override IANA names with MediaWiki names; always false at en.wiki -- caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all if true == media_wiki_override_enable then local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_lang_tag, 'all'); -- get a table of language tag/name pairs known to MediaWiki for tag, name in pairs (mw_languages_by_tag_t) do -- loop through each tag/name pair in the MediaWiki list if lang_name_table_t.lang[tag] then -- if the tag is in the main list lang_name_table_t.lang[tag] = name; -- overwrite exisiting name with the name from MediaWiki end end end --[[--------------------------< O V E R R I D E >-------------------------------------------------------------- Language codes and names in this table override the BCP47 names in lang_name_table. indexes in this table shall always be lower case ]] local override = { ------------------------------< I S O _ 6 3 9 - 1 >------------------------------------------------------------ ["ca-valencia"] = "Valencian", ["cu"] = "Church Slavonic", -- 2nd IANA name; ["de-at"] = "Austrian German", -- these code-region and code-variant tags to match en.wiki article names ["de-ch"] = "Swiss Standard German", ["en-au"] = "Australian English", ["en-ca"] = "Canadian English", ["en-emodeng"] = "Early Modern English", ["en-gb"] = "British English", ["en-ie"] = "Irish English", ["en-in"] = "Indian English", ["en-nz"] = "New Zealand English", ["en-us"] = "American English", ["en-za"] = "South African English", ["fy"] = "West Frisian", -- Western Frisian ["mo"] = "Moldovan", -- Moldavian (deprecated code); to match en.wiki article title ["nl-be"] = "Flemish", -- match MediaWiki ["oc-provenc"] = "Provençal", ["ps"] = "Pashto", -- Pushto ["pt-br"] = "Brazilian Portuguese", -- match MediaWiki ["tw-asante"] = "Asante Twi", -- these ISO 639-1 language-name overrides imported from Module:Language/data/wp_languages --<begin do-not-edit except to comment out>-- ["av"] = "Avar", -- Avaric ["bo"] = "Standard Tibetan", -- Tibetan ["el"] = "Greek", -- Modern Greek -- ["en-SA"] = "South African English", -- English; no; SA is not South Africa it Saudi Arabia; ZA is South Africa ["ff"] = "Fula", -- Fulah ["ht"] = "Haitian Creole", -- Haitian ["hz"] = "Otjiherero", -- Herero ["ii"] = "Yi", -- Sichuan Yi ["ki"] = "Gikuyu", -- Kikuyu ["kl"] = "Greenlandic", -- Kalaallisut ["ky"] = "Kyrgyz", -- Kirghiz ["lg"] = "Luganda", -- Ganda ["li"] = "Limburgish", -- Limburgan ["mi"] = "Māori", -- Maori ["na"] = "Nauruan", -- Nauru ["nb"] = "Bokmål", -- Norwegian Bokmål ["nd"] = "Northern Ndebele", -- North Ndebele ["nn"] = "Nynorsk", -- Norwegian Nynorsk ["nr"] = "Southern Ndebele", -- South Ndebele ["ny"] = "Chichewa", -- Nyanja ["oj"] = "Ojibwe", -- Ojibwa ["or"] = "Odia", -- Oriya ["pa"] = "Punjabi", -- Panjabi ["rn"] = "Kirundi", -- Rundi ["sl"] = "Slovene", -- Slovenian ["ss"] = "Swazi", -- Swati ["st"] = "Sotho", -- Southern Sotho ["to"] = "Tongan", -- Tonga --<end do-not-edit except to comment out>-- ------------------------------< I S O _ 6 3 9 - 2, - 3, - 5 >---------------------------------------------- ["alv"] = "Atlantic–Congo languages", -- to match en.wiki article title (endash) ["arc"] = "Aramaic", -- Official Aramaic (700-300 BCE), Imperial Aramaic (700-300 BCE); ["art"] = "constructed", -- to match en.wiki article; lowercase for category name ["bhd"] = "Bhadarwahi", -- Bhadrawahi; to match en.wiki article title ["bla"] = "Blackfoot", -- Siksika; to match en.wiki article title ["bua"] = "Buryat", -- Buriat; this is a macro language; these four use wp preferred transliteration; ["bxm"] = "Mongolian Buryat", -- Mongolia Buriat; these three all redirect to Buryat ["bxr"] = "Russian Buryat", -- Russia Buriat; ["bxu"] = "Chinese Buryat", -- China Buriat; ["byr"] = "Yipma", -- Baruya, Yipma ["egy"] = "Ancient Egyptian", -- Egyptian (Ancient); distinguish from contemporary arz: Egyptian Arabic ["ems"] = "Alutiiq", -- Pacific Gulf Yupik; to match en.wiki article title ["esx"] = "Eskimo–Aleut languages", -- to match en.wiki article title (endash) ["frr"] = "North Frisian", -- Northern Frisian ["frs"] = "East Frisian Low Saxon", -- Eastern Frisian ["gsw-fr"] = "Alsatian", -- match MediaWiki ["haa"] = "Hän", -- Han; to match en.wiki article title ["hmx"] = "Hmong–Mien languages", -- to match en.wiki article title (endash) ["ilo"] = "Ilocano", -- Iloko; to match en.wiki article title ["jam"] = "Jamaican Patois", -- Jamaican Creole English ["luo"] = "Dholuo", -- IANA (primary) /ISO 639-3: Luo (Kenya and Tanzania); IANA (secondary): Dholuo ["mhr"] = "Meadow Mari", -- Eastern Mari ["mid"] = "Modern Mandaic", -- Mandaic ['mis'] = "uncoded", -- Uncoded languages; capitalization; special scope, not collective scope; ["mkh"] = "Mon–Khmer languages", -- to match en.wiki article title (endash) ["mla"] = "Tamambo", -- Malo ['mte'] = "Mono-Alu", -- Mono (Solomon Islands) ['mul'] = "multiple", -- Multiple languages; capitalization; special scope, not collective scope; ["nan-tw"] = "Taiwanese Hokkien", -- make room for IANA / 639-3 nan Min Nan Chinese; match en.wiki article title ["new"] = "Newar", -- Newari, Nepal Bhasa; to match en,wiki article title ["ngf"] = "Trans–New Guinea languages", -- to match en.wiki article title (endash) ["nic"] = "Niger–Congo languages", -- Niger-Kordofanian languages; to match en,wiki article title ["nrf"] = "Norman", -- not quite a collective - IANA name: Jèrriais + Guernésiais; categorizes to Norman-language text ["nrf-gg"] = "Guernésiais", -- match MediaWiki ["nrf-je"] = "Jèrriais", -- match MediaWiki ["nzi"] = "Nzema", -- Nzima; to match en.wiki article title ["oma"] = "Omaha–Ponca", -- to match en.wiki article title (endash) ["orv"] = "Old East Slavic", -- Old Russian ["pfl"] = "Palatine German", -- Pfaelzisch; to match en.wiki article ["pie"] = "Piro Pueblo", -- Piro; to match en.wiki article ["pms"] = "Piedmontese", -- Piemontese; to match en.wiki article title ["pnb"] = "Punjabi (Western)", -- Western Panjabi; dab added to override import from ~/wp languages and distinguish pnb from pa in reverse look up tag_from_name() ["rop"] = "Australian Kriol", -- Kriol; en.wiki article is a dab; point to correct en.wiki article ["sdo"] = "Bukar–Sadong", -- Bukar-Sadung Bidayuh; to match en.wiki article title ["stq"] = "Saterland Frisian", -- Saterfriesisch ["und"] = "undetermined", -- capitalization to match existing category ["wrg"] = "Warrongo", -- Warungu ["xal-ru"] = "Kalmyk", -- to match en.wiki article title ["xgf"] = "Tongva", -- ISO 639-3 is Gabrielino-Fernandeño ["yuf"] = "Havasupai–Hualapai", -- Havasupai-Walapai-Yavapai; to match en.wiki article title ["zxx"] = "no linguistic content", -- capitalization -- these ISO 639-2, -3 language-name overrides imported from Module:Language/data/wp_languages --<begin do-not-edit except to comment out>-- ["ace"] = "Acehnese", -- Achinese ["aec"] = "Sa'idi Arabic", -- Saidi Arabic ["akl"] = "Aklan", -- Aklanon ["alt"] = "Altay", -- Southern Altai ["apm"] = "Mescalero-Chiricahua", -- Mescalero-Chiricahua Apache ["bal"] = "Balochi", -- Baluchi -- ["bcl"] = "Central Bicolano", -- Central Bikol ["bin"] = "Edo", -- Bini ["bpy"] = "Bishnupriya Manipuri", -- Bishnupriya ["chg"] = "Chagatay", -- Chagatai ["ckb"] = "Sorani Kurdish", -- Central Kurdish ["cnu"] = "Shenwa", -- Chenoua ["coc"] = "Cocopah", -- Cocopa ["diq"] = "Zazaki", -- Dimli ["fit"] = "Meänkieli", -- Tornedalen Finnish ["fkv"] = "Kven", -- Kven Finnish ["frk"] = "Old Frankish", -- Frankish ["gez"] = "Ge'ez", -- Geez ["gju"] = "Gujari", -- Gujari ["gsw"] = "Alemannic German", -- Swiss German ["gul"] = "Gullah", -- Sea Island Creole English ["hak"] = "Hakka", -- Hakka Chinese ["hbo"] = "Biblical Hebrew", -- Ancient Hebrew ["hnd"] = "Hindko", -- Southern Hindko -- ["ikt"] = "Inuvialuk", -- Inuinnaqtun ["kaa"] = "Karakalpak", -- Kara-Kalpak ["khb"] = "Tai Lü", -- Lü ["kmr"] = "Kurmanji Kurdish", -- Northern Kurdish ["kpo"] = "Kposo", -- Ikposo ["krj"] = "Kinaray-a", -- Kinaray-A ["ktz"] = "Juǀ'hoan", -- Juǀʼhoan ["lez"] = "Lezgian", -- Lezghian ["liv"] = "Livonian", -- Liv ["lng"] = "Lombardic", -- Langobardic ["mia"] = "Miami-Illinois", -- Miami ["miq"] = "Miskito", -- Mískito ["mix"] = "Mixtec", -- Mixtepec Mixtec ["mni"] = "Meitei", -- Manipuri ["mrj"] = "Hill Mari", -- Western Mari ["mww"] = "White Hmong", -- Hmong Daw ["nds-nl"] = "Dutch Low Saxon", -- Low German -- ["new"] = "Nepal Bhasa", -- Newari ["nso"] = "Northern Sotho", -- Pedi -- ["nwc"] = "Classical Nepal Bhasa", -- Classical Newari, Classical Nepal Bhasa, Old Newari ["ood"] = "O'odham", -- Tohono O'odham ["otk"] = "Old Turkic", -- Old Turkish ["pal"] = "Middle Persian", -- Pahlavi ["pam"] = "Kapampangan", -- Pampanga ["phr"] = "Potwari", -- Pahari-Potwari ["pka"] = "Jain Prakrit", -- Ardhamāgadhī Prākrit -- ["pnb"] = "Punjabi", -- Western Panjabi ["psu"] = "Shauraseni", -- Sauraseni Prākrit ["rap"] = "Rapa Nui", -- Rapanui ["rar"] = "Cook Islands Māori", -- Rarotongan ["rmu"] = "Scandoromani", -- Tavringer Romani ["rom"] = "Romani", -- Romany ["rup"] = "Aromanian", -- Macedo-Romanian ["ryu"] = "Okinawan", -- Central Okinawan ["sdc"] = "Sassarese", -- Sassarese Sardinian ["sdn"] = "Gallurese", -- Gallurese Sardinian ["shp"] = "Shipibo", -- Shipibo-Conibo ["src"] = "Logudorese", -- Logudorese Sardinian ["sro"] = "Campidanese", -- Campidanese Sardinian ["tkl"] = "Tokelauan", -- Tokelau ["tvl"] = "Tuvaluan", -- Tuvalu ["tyv"] = "Tuvan", -- Tuvinian ["vls"] = "West Flemish", -- Vlaams ["wep"] = "Westphalian", -- Westphalien ["xal"] = "Oirat", -- Kalmyk ["xcl"] = "Old Armenian", -- Classical Armenian ["yua"] = "Yucatec Maya", -- Yucateco --<end do-not-edit except to comment out>-- ------------------------------< P R I V A T E _ U S E _ T A G S >---------------------------------------------- ["alg-x-proto"] = "Proto-Algonquian", -- alg in IANA is Algonquian languages ["cel-x-proto"] = "Proto-Celtic", -- cel in IANA is Celtic languages ["gem-x-proto"] = "Proto-Germanic", -- gem in IANA is Germanic languages ["gmw-x-ecg"] = "East Central German", ["grc-x-aeolic"] = "Aeolic Greek", -- these grc-x-... codes are preferred alternates to the non-standard catchall code grc-gre ["grc-x-attic"] = "Attic Greek", ["grc-x-biblical"] = "Biblical Greek", ["grc-x-byzant"] = "Byzantine Greek", ["grc-x-classic"] = "Classical Greek", ["grc-x-doric"] = "Doric Greek", ["grc-x-hellen"] = "Hellenistic Greek", ["grc-x-ionic"] = "Ionic Greek", ["grc-x-koine"] = "Koinē Greek", ["grc-x-medieval"] = "Medieval Greek", ["grc-x-patris"] = "Patristic Greek", ["grk-x-proto"] = "Proto-Greek", -- grk in IANA is Greek languages ["iir-x-proto"] = "Proto-Indo-Iranian", -- iir in IANA is Indo-Iranian Languages ["ine-x-proto"] = "Proto-Indo-European", ["ira-x-proto"] = "Proto-Iranian", -- ira in IANA is Iranian languages ["itc-x-proto"] = "Proto-Italic", -- itc in IANA is Italic languages ["ksh-x-colog"] = "Colognian", -- en.wiki article is Colognian; ksh (Kölsch) redirects there ["la-x-medieval"] = "Medieval Latin", ["mis-x-ripuar"] = "Ripuarian", -- replaces improper use of ksh in wp_languages ["sem-x-proto"] = "Proto-Semitic", ["sla-x-proto"] = "Proto-Slavic", -- sla in IANA is Slavic languages ["yuf-x-hav"] = "Havasupai", -- IANA name for these three is Havasupai-Walapai-Yavapai ["yuf-x-wal"] = "Walapai", ["yuf-x-yav"] = "Yavapai", } --[[--------------------------< A R T I C L E _ L I N K >------------------------------------------------------ for those rare occasions when article titles don't fit with the normal '<language name>-language', this table maps language code to article title. Use of this table should be avoided and the use of redirects preferred as that is the long-standing method of handling article names that don't fit with the normal pattern ]] local article_name = { ["lij"] = "Ligurian (Romance language)", -- Ligurian; see Template_talk:Lang#Ligurian_dab ['mnh'] = "Mono language (Congo)", -- Mono (Democratic Republic of Congo); see Template_talk:Lang#Mono_languages ['mnr'] = "Mono language (California)", -- Mono (USA) ['mru'] = "Mono language (Cameroon)", -- Mono (Cameroon) ["xlg"] = "Ligurian (ancient language)", -- see Template_talk:Lang#Ligurian_dab } --[=[-------------------------< R T L _ S C R I P T S >-------------------------------------------------------- ISO 15924 scripts that are written right-to-left. Data in this table taken from [[ISO 15924#List of codes]] last update to this list: 2017-12-24 ]=] local rtl_scripts = { 'adlm', 'arab', 'aran', 'armi', 'avst', 'cprt', 'egyd', 'egyh', 'hatr', 'hebr', 'hung', 'inds', 'khar', 'lydi', 'mand', 'mani', 'mend', 'merc', 'mero', 'narb', 'nbat', 'nkoo', 'orkh', 'palm', 'phli', 'phlp', 'phlv', 'phnx', 'prti', 'rohg', 'samr', 'sarb', 'sogd', 'sogo', 'syrc', 'syre', 'syrj', 'syrn', 'thaa', 'wole', }; --[[--------------------------< T R A N S L I T _ T I T L E S >------------------------------------------------ This is a table of tables of transliteration standards and the language codes or language scripts that apply to those standards. This table is used to create the tool-tip text associated with the transliterated text displayed by some of the {{lang-??}} templates. These tables are more-or-less copied directly from {{transl}}. The standard 'NO_STD' is a construct to allow for the cases when no |std= parameter value is provided. ]] local translit_title_table = { ['ahl'] = { ['default'] = 'Academy of the Hebrew Language transliteration', }, ['ala'] = { ['default'] = 'American Library Association – Library of Congress transliteration', }, ['ala-lc'] = { ['default'] = 'American Library Association – Library of Congress transliteration', }, ['batr'] = { ['default'] = 'Bikdash Arabic Transliteration Rules', }, ['bgn/pcgn'] = { ['default'] = 'Board on Geographic Names / Permanent Committee on Geographical Names transliteration', }, ['din'] = { ['ar'] = 'DIN 31635 Arabic', ['fa'] = 'DIN 31635 Arabic', ['ku'] = 'DIN 31635 Arabic', ['ps'] = 'DIN 31635 Arabic', ['tg'] = 'DIN 31635 Arabic', ['ug'] = 'DIN 31635 Arabic', ['ur'] = 'DIN 31635 Arabic', ['arab'] = 'DIN 31635 Arabic', ['default'] = 'DIN transliteration', }, ['eae'] = { ['default'] = 'Encyclopaedia Aethiopica transliteration', }, ['hepburn'] = { ['default'] = 'Hepburn transliteration', }, ['hunterian'] = { ['default'] = 'Hunterian transliteration', }, ['iast'] = { ['default'] = 'International Alphabet of Sanskrit transliteration', }, ['iso'] = { -- when a transliteration standard is supplied ['ab'] = 'ISO 9 Cyrillic', ['ba'] = 'ISO 9 Cyrillic', ['be'] = 'ISO 9 Cyrillic', ['bg'] = 'ISO 9 Cyrillic', ['kk'] = 'ISO 9 Cyrillic', ['ky'] = 'ISO 9 Cyrillic', ['mn'] = 'ISO 9 Cyrillic', ['ru'] = 'ISO 9 Cyrillic', ['tg'] = 'ISO 9 Cyrillic', ['uk'] = 'ISO 9 Cyrillic', ['bua'] = 'ISO 9 Cyrillic', ['sah'] = 'ISO 9 Cyrillic', ['tut'] = 'ISO 9 Cyrillic', ['xal'] = 'ISO 9 Cyrillic', ['cyrl'] = 'ISO 9 Cyrillic', ['ar'] = 'ISO 233 Arabic', ['ku'] = 'ISO 233 Arabic', ['ps'] = 'ISO 233 Arabic', ['ug'] = 'ISO 233 Arabic', ['ur'] = 'ISO 233 Arabic', ['arab'] = 'ISO 233 Arabic', ['he'] = 'ISO 259 Hebrew', ['yi'] = 'ISO 259 Hebrew', ['hebr'] = 'ISO 259 Hebrew', ['el'] = 'ISO 843 Greek', ['grc'] = 'ISO 843 Greek', ['ja'] = 'ISO 3602 Japanese', ['hira'] = 'ISO 3602 Japanese', ['hrkt'] = 'ISO 3602 Japanese', ['jpan'] = 'ISO 3602 Japanese', ['kana'] = 'ISO 3602 Japanese', ['zh'] = 'ISO 7098 Chinese', ['chi'] = 'ISO 7098 Chinese', ['pny'] = 'ISO 7098 Chinese', ['zho'] = 'ISO 7098 Chinese', -- ['han'] = 'ISO 7098 Chinese', -- unicode alias of Hani? doesn't belong here? should be Hani? ['hans'] = 'ISO 7098 Chinese', ['hant'] = 'ISO 7098 Chinese', ['ka'] = 'ISO 9984 Georgian', ['kat'] = 'ISO 9984 Georgian', ['arm'] = 'ISO 9985 Armenian', ['hy'] = 'ISO 9985 Armenian', ['th'] = 'ISO 11940 Thai', ['tha'] = 'ISO 11940 Thai', ['ko'] = 'ISO 11941 Korean', ['kor'] = 'ISO 11941 Korean', ['awa'] = 'ISO 15919 Indic', ['bho'] = 'ISO 15919 Indic', ['bn'] = 'ISO 15919 Indic', ['bra'] = 'ISO 15919 Indic', ['doi'] = 'ISO 15919 Indic', ['dra'] = 'ISO 15919 Indic', ['gon'] = 'ISO 15919 Indic', ['gu'] = 'ISO 15919 Indic', ['hi'] = 'ISO 15919 Indic', ['inc'] = 'ISO 15919 Indic', ['kn'] = 'ISO 15919 Indic', ['kok'] = 'ISO 15919 Indic', ['ks'] = 'ISO 15919 Indic', ['mag'] = 'ISO 15919 Indic', ['mai'] = 'ISO 15919 Indic', ['ml'] = 'ISO 15919 Indic', ['mr'] = 'ISO 15919 Indic', ['ne'] = 'ISO 15919 Indic', ['new'] = 'ISO 15919 Indic', ['or'] = 'ISO 15919 Indic', ['pa'] = 'ISO 15919 Indic', ['raj'] = 'ISO 15919 Indic', ['sa'] = 'ISO 15919 Indic', ['sat'] = 'ISO 15919 Indic', ['sd'] = 'ISO 15919 Indic', ['si'] = 'ISO 15919 Indic', ['ta'] = 'ISO 15919 Indic', ['tcy'] = 'ISO 15919 Indic', ['te'] = 'ISO 15919 Indic', ['beng'] = 'ISO 15919 Indic', ['brah'] = 'ISO 15919 Indic', ['deva'] = 'ISO 15919 Indic', ['gujr'] = 'ISO 15919 Indic', ['guru'] = 'ISO 15919 Indic', ['knda'] = 'ISO 15919 Indic', ['mlym'] = 'ISO 15919 Indic', ['orya'] = 'ISO 15919 Indic', ['sinh'] = 'ISO 15919 Indic', ['taml'] = 'ISO 15919 Indic', ['telu'] = 'ISO 15919 Indic', ['default'] = 'ISO transliteration', }, ['jyutping'] = { ['default'] = 'Jyutping transliteration', }, ['mlcts'] = { ['default'] = 'Myanmar Language Commission Transcription System', }, ['mr'] = { ['default'] = 'McCune–Reischauer transliteration', }, ['nihon-shiki'] = { ['default'] = 'Nihon-shiki transliteration', }, ['no_std'] = { -- when no transliteration standard is supplied ['akk'] = 'Semitic transliteration', ['sem'] = 'Semitic transliteration', ['phnx'] = 'Semitic transliteration', ['xsux'] = 'Cuneiform transliteration', }, ['pinyin'] = { ['default'] = 'Pinyin transliteration', }, ['rr'] = { ['default'] = 'Revised Romanization of Korean transliteration', }, ['rtgs'] = { ['default'] = 'Royal Thai General System of Transcription', }, ['satts'] = { ['default'] = 'Standard Arabic Technical Transliteration System transliteration', }, ['scientific'] = { ['default'] = 'scientific transliteration', }, ['ukrainian'] = { ['default'] = 'Ukrainian National system of romanization', }, ['ungegn'] = { ['default'] = 'United Nations Group of Experts on Geographical Names transliteration', }, ['wadegile'] = { ['default'] = 'Wade–Giles transliteration', }, ['wehr'] = { ['default'] = 'Hans Wehr transliteration', }, }; return { this_wiki_lang_tag = this_wiki_lang_tag, this_wiki_lang_dir = lang_obj:getDir(), -- wiki's language direction article_name = article_name, lang_name_table = lang_name_table_t, override = override, rtl_scripts = rtl_scripts, special_tags_table = special_tags_table, translit_title_table = translit_title_table, }; 8c0e8e62469fe1a7a015e92ede5d284b72725bff Module:Language/data/iana languages 828 41 78 2024-01-03T21:18:45Z Laggardson 2 Created page with "-- File-Date: 2022-03-02 local active = { ["aa"] = {"Afar"}, ["ab"] = {"Abkhazian"}, ["ae"] = {"Avestan"}, ["af"] = {"Afrikaans"}, ["ak"] = {"Akan"}, ["am"] = {"Amharic"}, ["an"] = {"Aragonese"}, ["ar"] = {"Arabic"}, ["as"] = {"Assamese"}, ["av"] = {"Avaric"}, ["ay"] = {"Aymara"}, ["az"] = {"Azerbaijani"}, ["ba"] = {"Bashkir"}, ["be"] = {"Belarusian"}, ["bg"] = {"Bulgarian"}, ["bh"] = {"Bihari languages"}, ["bi"] = {"Bislama"}, ["bm"] = {"Bambara"}, ["..." Scribunto text/plain -- File-Date: 2022-03-02 local active = { ["aa"] = {"Afar"}, ["ab"] = {"Abkhazian"}, ["ae"] = {"Avestan"}, ["af"] = {"Afrikaans"}, ["ak"] = {"Akan"}, ["am"] = {"Amharic"}, ["an"] = {"Aragonese"}, ["ar"] = {"Arabic"}, ["as"] = {"Assamese"}, ["av"] = {"Avaric"}, ["ay"] = {"Aymara"}, ["az"] = {"Azerbaijani"}, ["ba"] = {"Bashkir"}, ["be"] = {"Belarusian"}, ["bg"] = {"Bulgarian"}, ["bh"] = {"Bihari languages"}, ["bi"] = {"Bislama"}, ["bm"] = {"Bambara"}, ["bn"] = {"Bengali", "Bangla"}, ["bo"] = {"Tibetan"}, ["br"] = {"Breton"}, ["bs"] = {"Bosnian"}, ["ca"] = {"Catalan", "Valencian"}, ["ce"] = {"Chechen"}, ["ch"] = {"Chamorro"}, ["co"] = {"Corsican"}, ["cr"] = {"Cree"}, ["cs"] = {"Czech"}, ["cu"] = {"Church Slavic", "Church Slavonic", "Old Bulgarian", "Old Church Slavonic", "Old Slavonic"}, ["cv"] = {"Chuvash"}, ["cy"] = {"Welsh"}, ["da"] = {"Danish"}, ["de"] = {"German"}, ["dv"] = {"Dhivehi", "Divehi", "Maldivian"}, ["dz"] = {"Dzongkha"}, ["ee"] = {"Ewe"}, ["el"] = {"Modern Greek (1453-)"}, ["en"] = {"English"}, ["eo"] = {"Esperanto"}, ["es"] = {"Spanish", "Castilian"}, ["et"] = {"Estonian"}, ["eu"] = {"Basque"}, ["fa"] = {"Persian"}, ["ff"] = {"Fulah"}, ["fi"] = {"Finnish"}, ["fj"] = {"Fijian"}, ["fo"] = {"Faroese"}, ["fr"] = {"French"}, ["fy"] = {"Western Frisian"}, ["ga"] = {"Irish"}, ["gd"] = {"Scottish Gaelic", "Gaelic"}, ["gl"] = {"Galician"}, ["gn"] = {"Guarani"}, ["gu"] = {"Gujarati"}, ["gv"] = {"Manx"}, ["ha"] = {"Hausa"}, ["he"] = {"Hebrew"}, ["hi"] = {"Hindi"}, ["ho"] = {"Hiri Motu"}, ["hr"] = {"Croatian"}, ["ht"] = {"Haitian", "Haitian Creole"}, ["hu"] = {"Hungarian"}, ["hy"] = {"Armenian"}, ["hz"] = {"Herero"}, ["ia"] = {"Interlingua (International Auxiliary Language Association)"}, ["id"] = {"Indonesian"}, ["ie"] = {"Interlingue", "Occidental"}, ["ig"] = {"Igbo"}, ["ii"] = {"Sichuan Yi", "Nuosu"}, ["ik"] = {"Inupiaq"}, ["io"] = {"Ido"}, ["is"] = {"Icelandic"}, ["it"] = {"Italian"}, ["iu"] = {"Inuktitut"}, ["ja"] = {"Japanese"}, ["jv"] = {"Javanese"}, ["ka"] = {"Georgian"}, ["kg"] = {"Kongo"}, ["ki"] = {"Kikuyu", "Gikuyu"}, ["kj"] = {"Kuanyama", "Kwanyama"}, ["kk"] = {"Kazakh"}, ["kl"] = {"Kalaallisut", "Greenlandic"}, ["km"] = {"Khmer", "Central Khmer"}, ["kn"] = {"Kannada"}, ["ko"] = {"Korean"}, ["kr"] = {"Kanuri"}, ["ks"] = {"Kashmiri"}, ["ku"] = {"Kurdish"}, ["kv"] = {"Komi"}, ["kw"] = {"Cornish"}, ["ky"] = {"Kirghiz", "Kyrgyz"}, ["la"] = {"Latin"}, ["lb"] = {"Luxembourgish", "Letzeburgesch"}, ["lg"] = {"Ganda", "Luganda"}, ["li"] = {"Limburgan", "Limburger", "Limburgish"}, ["ln"] = {"Lingala"}, ["lo"] = {"Lao"}, ["lt"] = {"Lithuanian"}, ["lu"] = {"Luba-Katanga"}, ["lv"] = {"Latvian"}, ["mg"] = {"Malagasy"}, ["mh"] = {"Marshallese"}, ["mi"] = {"Maori"}, ["mk"] = {"Macedonian"}, ["ml"] = {"Malayalam"}, ["mn"] = {"Mongolian"}, ["mr"] = {"Marathi"}, ["ms"] = {"Malay (macrolanguage)"}, ["mt"] = {"Maltese"}, ["my"] = {"Burmese"}, ["na"] = {"Nauru"}, ["nb"] = {"Norwegian Bokmål"}, ["nd"] = {"North Ndebele"}, ["ne"] = {"Nepali (macrolanguage)"}, ["ng"] = {"Ndonga"}, ["nl"] = {"Dutch", "Flemish"}, ["nn"] = {"Norwegian Nynorsk"}, ["no"] = {"Norwegian"}, ["nr"] = {"South Ndebele"}, ["nv"] = {"Navajo", "Navaho"}, ["ny"] = {"Nyanja", "Chewa", "Chichewa"}, ["oc"] = {"Occitan (post 1500)"}, ["oj"] = {"Ojibwa"}, ["om"] = {"Oromo"}, ["or"] = {"Oriya (macrolanguage)", "Odia (macrolanguage)"}, ["os"] = {"Ossetian", "Ossetic"}, ["pa"] = {"Panjabi", "Punjabi"}, ["pi"] = {"Pali"}, ["pl"] = {"Polish"}, ["ps"] = {"Pushto", "Pashto"}, ["pt"] = {"Portuguese"}, ["qu"] = {"Quechua"}, ["rm"] = {"Romansh"}, ["rn"] = {"Rundi"}, ["ro"] = {"Romanian", "Moldavian", "Moldovan"}, ["ru"] = {"Russian"}, ["rw"] = {"Kinyarwanda"}, ["sa"] = {"Sanskrit"}, ["sc"] = {"Sardinian"}, ["sd"] = {"Sindhi"}, ["se"] = {"Northern Sami"}, ["sg"] = {"Sango"}, ["sh"] = {"Serbo-Croatian"}, ["si"] = {"Sinhala", "Sinhalese"}, ["sk"] = {"Slovak"}, ["sl"] = {"Slovenian"}, ["sm"] = {"Samoan"}, ["sn"] = {"Shona"}, ["so"] = {"Somali"}, ["sq"] = {"Albanian"}, ["sr"] = {"Serbian"}, ["ss"] = {"Swati"}, ["st"] = {"Southern Sotho"}, ["su"] = {"Sundanese"}, ["sv"] = {"Swedish"}, ["sw"] = {"Swahili (macrolanguage)"}, ["ta"] = {"Tamil"}, ["te"] = {"Telugu"}, ["tg"] = {"Tajik"}, ["th"] = {"Thai"}, ["ti"] = {"Tigrinya"}, ["tk"] = {"Turkmen"}, ["tl"] = {"Tagalog"}, ["tn"] = {"Tswana"}, ["to"] = {"Tonga (Tonga Islands)"}, ["tr"] = {"Turkish"}, ["ts"] = {"Tsonga"}, ["tt"] = {"Tatar"}, ["tw"] = {"Twi"}, ["ty"] = {"Tahitian"}, ["ug"] = {"Uighur", "Uyghur"}, ["uk"] = {"Ukrainian"}, ["ur"] = {"Urdu"}, ["uz"] = {"Uzbek"}, ["ve"] = {"Venda"}, ["vi"] = {"Vietnamese"}, ["vo"] = {"Volapük"}, ["wa"] = {"Walloon"}, ["wo"] = {"Wolof"}, ["xh"] = {"Xhosa"}, ["yi"] = {"Yiddish"}, ["yo"] = {"Yoruba"}, ["za"] = {"Zhuang", "Chuang"}, ["zh"] = {"Chinese"}, ["zu"] = {"Zulu"}, ["aaa"] = {"Ghotuo"}, ["aab"] = {"Alumu-Tesu"}, ["aac"] = {"Ari"}, ["aad"] = {"Amal"}, ["aae"] = {"Arbëreshë Albanian"}, ["aaf"] = {"Aranadan"}, ["aag"] = {"Ambrak"}, ["aah"] = {"Abu' Arapesh"}, ["aai"] = {"Arifama-Miniafia"}, ["aak"] = {"Ankave"}, ["aal"] = {"Afade"}, ["aan"] = {"Anambé"}, ["aao"] = {"Algerian Saharan Arabic"}, ["aap"] = {"Pará Arára"}, ["aaq"] = {"Eastern Abnaki"}, ["aas"] = {"Aasáx"}, ["aat"] = {"Arvanitika Albanian"}, ["aau"] = {"Abau"}, ["aav"] = {"Austro-Asiatic languages"}, ["aaw"] = {"Solong"}, ["aax"] = {"Mandobo Atas"}, ["aaz"] = {"Amarasi"}, ["aba"] = {"Abé"}, ["abb"] = {"Bankon"}, ["abc"] = {"Ambala Ayta"}, ["abd"] = {"Manide"}, ["abe"] = {"Western Abnaki"}, ["abf"] = {"Abai Sungai"}, ["abg"] = {"Abaga"}, ["abh"] = {"Tajiki Arabic"}, ["abi"] = {"Abidji"}, ["abj"] = {"Aka-Bea"}, ["abl"] = {"Lampung Nyo"}, ["abm"] = {"Abanyom"}, ["abn"] = {"Abua"}, ["abo"] = {"Abon"}, ["abp"] = {"Abellen Ayta"}, ["abq"] = {"Abaza"}, ["abr"] = {"Abron"}, ["abs"] = {"Ambonese Malay"}, ["abt"] = {"Ambulas"}, ["abu"] = {"Abure"}, ["abv"] = {"Baharna Arabic"}, ["abw"] = {"Pal"}, ["abx"] = {"Inabaknon"}, ["aby"] = {"Aneme Wake"}, ["abz"] = {"Abui"}, ["aca"] = {"Achagua"}, ["acb"] = {"Áncá"}, ["acd"] = {"Gikyode"}, ["ace"] = {"Achinese"}, ["acf"] = {"Saint Lucian Creole French"}, ["ach"] = {"Acoli"}, ["aci"] = {"Aka-Cari"}, ["ack"] = {"Aka-Kora"}, ["acl"] = {"Akar-Bale"}, ["acm"] = {"Mesopotamian Arabic"}, ["acn"] = {"Achang"}, ["acp"] = {"Eastern Acipa"}, ["acq"] = {"Ta'izzi-Adeni Arabic"}, ["acr"] = {"Achi"}, ["acs"] = {"Acroá"}, ["act"] = {"Achterhoeks"}, ["acu"] = {"Achuar-Shiwiar"}, ["acv"] = {"Achumawi"}, ["acw"] = {"Hijazi Arabic"}, ["acx"] = {"Omani Arabic"}, ["acy"] = {"Cypriot Arabic"}, ["acz"] = {"Acheron"}, ["ada"] = {"Adangme"}, ["adb"] = {"Atauran"}, ["add"] = {"Lidzonka", "Dzodinka"}, ["ade"] = {"Adele"}, ["adf"] = {"Dhofari Arabic"}, ["adg"] = {"Andegerebinha"}, ["adh"] = {"Adhola"}, ["adi"] = {"Adi"}, ["adj"] = {"Adioukrou"}, ["adl"] = {"Galo"}, ["adn"] = {"Adang"}, ["ado"] = {"Abu"}, ["adq"] = {"Adangbe"}, ["adr"] = {"Adonara"}, ["ads"] = {"Adamorobe Sign Language"}, ["adt"] = {"Adnyamathanha"}, ["adu"] = {"Aduge"}, ["adw"] = {"Amundava"}, ["adx"] = {"Amdo Tibetan"}, ["ady"] = {"Adyghe", "Adygei"}, ["adz"] = {"Adzera"}, ["aea"] = {"Areba"}, ["aeb"] = {"Tunisian Arabic"}, ["aec"] = {"Saidi Arabic"}, ["aed"] = {"Argentine Sign Language"}, ["aee"] = {"Northeast Pashai", "Northeast Pashayi"}, ["aek"] = {"Haeke"}, ["ael"] = {"Ambele"}, ["aem"] = {"Arem"}, ["aen"] = {"Armenian Sign Language"}, ["aeq"] = {"Aer"}, ["aer"] = {"Eastern Arrernte"}, ["aes"] = {"Alsea"}, ["aeu"] = {"Akeu"}, ["aew"] = {"Ambakich"}, ["aey"] = {"Amele"}, ["aez"] = {"Aeka"}, ["afa"] = {"Afro-Asiatic languages"}, ["afb"] = {"Gulf Arabic"}, ["afd"] = {"Andai"}, ["afe"] = {"Putukwam"}, ["afg"] = {"Afghan Sign Language"}, ["afh"] = {"Afrihili"}, ["afi"] = {"Akrukay", "Chini"}, ["afk"] = {"Nanubae"}, ["afn"] = {"Defaka"}, ["afo"] = {"Eloyi"}, ["afp"] = {"Tapei"}, ["afs"] = {"Afro-Seminole Creole"}, ["aft"] = {"Afitti"}, ["afu"] = {"Awutu"}, ["afz"] = {"Obokuitai"}, ["aga"] = {"Aguano"}, ["agb"] = {"Legbo"}, ["agc"] = {"Agatu"}, ["agd"] = {"Agarabi"}, ["age"] = {"Angal"}, ["agf"] = {"Arguni"}, ["agg"] = {"Angor"}, ["agh"] = {"Ngelima"}, ["agi"] = {"Agariya"}, ["agj"] = {"Argobba"}, ["agk"] = {"Isarog Agta"}, ["agl"] = {"Fembe"}, ["agm"] = {"Angaataha"}, ["agn"] = {"Agutaynen"}, ["ago"] = {"Tainae"}, ["agq"] = {"Aghem"}, ["agr"] = {"Aguaruna"}, ["ags"] = {"Esimbi"}, ["agt"] = {"Central Cagayan Agta"}, ["agu"] = {"Aguacateco"}, ["agv"] = {"Remontado Dumagat"}, ["agw"] = {"Kahua"}, ["agx"] = {"Aghul"}, ["agy"] = {"Southern Alta"}, ["agz"] = {"Mt. Iriga Agta"}, ["aha"] = {"Ahanta"}, ["ahb"] = {"Axamb"}, ["ahg"] = {"Qimant"}, ["ahh"] = {"Aghu"}, ["ahi"] = {"Tiagbamrin Aizi"}, ["ahk"] = {"Akha"}, ["ahl"] = {"Igo"}, ["ahm"] = {"Mobumrin Aizi"}, ["ahn"] = {"Àhàn"}, ["aho"] = {"Ahom"}, ["ahp"] = {"Aproumu Aizi"}, ["ahr"] = {"Ahirani"}, ["ahs"] = {"Ashe"}, ["aht"] = {"Ahtena"}, ["aia"] = {"Arosi"}, ["aib"] = {"Ainu (China)"}, ["aic"] = {"Ainbai"}, ["aid"] = {"Alngith"}, ["aie"] = {"Amara"}, ["aif"] = {"Agi"}, ["aig"] = {"Antigua and Barbuda Creole English"}, ["aih"] = {"Ai-Cham"}, ["aii"] = {"Assyrian Neo-Aramaic"}, ["aij"] = {"Lishanid Noshan"}, ["aik"] = {"Ake"}, ["ail"] = {"Aimele"}, ["aim"] = {"Aimol"}, ["ain"] = {"Ainu (Japan)"}, ["aio"] = {"Aiton"}, ["aip"] = {"Burumakok"}, ["aiq"] = {"Aimaq"}, ["air"] = {"Airoran"}, ["ait"] = {"Arikem"}, ["aiw"] = {"Aari"}, ["aix"] = {"Aighon"}, ["aiy"] = {"Ali"}, ["aja"] = {"Aja (South Sudan)"}, ["ajg"] = {"Aja (Benin)"}, ["aji"] = {"Ajië"}, ["ajn"] = {"Andajin"}, ["ajp"] = {"South Levantine Arabic"}, ["ajs"] = {"Algerian Jewish Sign Language"}, ["aju"] = {"Judeo-Moroccan Arabic"}, ["ajw"] = {"Ajawa"}, ["ajz"] = {"Amri Karbi"}, ["akb"] = {"Batak Angkola"}, ["akc"] = {"Mpur"}, ["akd"] = {"Ukpet-Ehom"}, ["ake"] = {"Akawaio"}, ["akf"] = {"Akpa"}, ["akg"] = {"Anakalangu"}, ["akh"] = {"Angal Heneng"}, ["aki"] = {"Aiome"}, ["akj"] = {"Aka-Jeru"}, ["akk"] = {"Akkadian"}, ["akl"] = {"Aklanon"}, ["akm"] = {"Aka-Bo"}, ["ako"] = {"Akurio"}, ["akp"] = {"Siwu"}, ["akq"] = {"Ak"}, ["akr"] = {"Araki"}, ["aks"] = {"Akaselem"}, ["akt"] = {"Akolet"}, ["aku"] = {"Akum"}, ["akv"] = {"Akhvakh"}, ["akw"] = {"Akwa"}, ["akx"] = {"Aka-Kede"}, ["aky"] = {"Aka-Kol"}, ["akz"] = {"Alabama"}, ["ala"] = {"Alago"}, ["alc"] = {"Qawasqar"}, ["ald"] = {"Alladian"}, ["ale"] = {"Aleut"}, ["alf"] = {"Alege"}, ["alg"] = {"Algonquian languages"}, ["alh"] = {"Alawa"}, ["ali"] = {"Amaimon"}, ["alj"] = {"Alangan"}, ["alk"] = {"Alak"}, ["all"] = {"Allar"}, ["alm"] = {"Amblong"}, ["aln"] = {"Gheg Albanian"}, ["alo"] = {"Larike-Wakasihu"}, ["alp"] = {"Alune"}, ["alq"] = {"Algonquin"}, ["alr"] = {"Alutor"}, ["als"] = {"Tosk Albanian"}, ["alt"] = {"Southern Altai"}, ["alu"] = {"'Are'are"}, ["alv"] = {"Atlantic-Congo languages"}, ["alw"] = {"Alaba-K’abeena", "Wanbasana"}, ["alx"] = {"Amol"}, ["aly"] = {"Alyawarr"}, ["alz"] = {"Alur"}, ["ama"] = {"Amanayé"}, ["amb"] = {"Ambo"}, ["amc"] = {"Amahuaca"}, ["ame"] = {"Yanesha'"}, ["amf"] = {"Hamer-Banna"}, ["amg"] = {"Amurdak"}, ["ami"] = {"Amis"}, ["amj"] = {"Amdang"}, ["amk"] = {"Ambai"}, ["aml"] = {"War-Jaintia"}, ["amm"] = {"Ama (Papua New Guinea)"}, ["amn"] = {"Amanab"}, ["amo"] = {"Amo"}, ["amp"] = {"Alamblak"}, ["amq"] = {"Amahai"}, ["amr"] = {"Amarakaeri"}, ["ams"] = {"Southern Amami-Oshima"}, ["amt"] = {"Amto"}, ["amu"] = {"Guerrero Amuzgo"}, ["amv"] = {"Ambelau"}, ["amw"] = {"Western Neo-Aramaic"}, ["amx"] = {"Anmatyerre"}, ["amy"] = {"Ami"}, ["amz"] = {"Atampaya"}, ["ana"] = {"Andaqui"}, ["anb"] = {"Andoa"}, ["anc"] = {"Ngas"}, ["and"] = {"Ansus"}, ["ane"] = {"Xârâcùù"}, ["anf"] = {"Animere"}, ["ang"] = {"Old English (ca. 450-1100)"}, ["anh"] = {"Nend"}, ["ani"] = {"Andi"}, ["anj"] = {"Anor"}, ["ank"] = {"Goemai"}, ["anl"] = {"Anu-Hkongso Chin"}, ["anm"] = {"Anal"}, ["ann"] = {"Obolo"}, ["ano"] = {"Andoque"}, ["anp"] = {"Angika"}, ["anq"] = {"Jarawa (India)"}, ["anr"] = {"Andh"}, ["ans"] = {"Anserma"}, ["ant"] = {"Antakarinya", "Antikarinya"}, ["anu"] = {"Anuak"}, ["anv"] = {"Denya"}, ["anw"] = {"Anaang"}, ["anx"] = {"Andra-Hus"}, ["any"] = {"Anyin"}, ["anz"] = {"Anem"}, ["aoa"] = {"Angolar"}, ["aob"] = {"Abom"}, ["aoc"] = {"Pemon"}, ["aod"] = {"Andarum"}, ["aoe"] = {"Angal Enen"}, ["aof"] = {"Bragat"}, ["aog"] = {"Angoram"}, ["aoi"] = {"Anindilyakwa"}, ["aoj"] = {"Mufian"}, ["aok"] = {"Arhö"}, ["aol"] = {"Alor"}, ["aom"] = {"Ömie"}, ["aon"] = {"Bumbita Arapesh"}, ["aor"] = {"Aore"}, ["aos"] = {"Taikat"}, ["aot"] = {"Atong (India)", "A'tong"}, ["aou"] = {"A'ou"}, ["aox"] = {"Atorada"}, ["aoz"] = {"Uab Meto"}, ["apa"] = {"Apache languages"}, ["apb"] = {"Sa'a"}, ["apc"] = {"North Levantine Arabic"}, ["apd"] = {"Sudanese Arabic"}, ["ape"] = {"Bukiyip"}, ["apf"] = {"Pahanan Agta"}, ["apg"] = {"Ampanang"}, ["aph"] = {"Athpariya"}, ["api"] = {"Apiaká"}, ["apj"] = {"Jicarilla Apache"}, ["apk"] = {"Kiowa Apache"}, ["apl"] = {"Lipan Apache"}, ["apm"] = {"Mescalero-Chiricahua Apache"}, ["apn"] = {"Apinayé"}, ["apo"] = {"Ambul"}, ["app"] = {"Apma"}, ["apq"] = {"A-Pucikwar"}, ["apr"] = {"Arop-Lokep"}, ["aps"] = {"Arop-Sissano"}, ["apt"] = {"Apatani"}, ["apu"] = {"Apurinã"}, ["apv"] = {"Alapmunte"}, ["apw"] = {"Western Apache"}, ["apx"] = {"Aputai"}, ["apy"] = {"Apalaí"}, ["apz"] = {"Safeyoka"}, ["aqa"] = {"Alacalufan languages"}, ["aqc"] = {"Archi"}, ["aqd"] = {"Ampari Dogon"}, ["aqg"] = {"Arigidi"}, ["aqk"] = {"Aninka"}, ["aql"] = {"Algic languages"}, ["aqm"] = {"Atohwaim"}, ["aqn"] = {"Northern Alta"}, ["aqp"] = {"Atakapa"}, ["aqr"] = {"Arhâ"}, ["aqt"] = {"Angaité"}, ["aqz"] = {"Akuntsu"}, ["arb"] = {"Standard Arabic"}, ["arc"] = {"Official Aramaic (700-300 BCE)", "Imperial Aramaic (700-300 BCE)"}, ["ard"] = {"Arabana"}, ["are"] = {"Western Arrarnta"}, ["arh"] = {"Arhuaco"}, ["ari"] = {"Arikara"}, ["arj"] = {"Arapaso"}, ["ark"] = {"Arikapú"}, ["arl"] = {"Arabela"}, ["arn"] = {"Mapudungun", "Mapuche"}, ["aro"] = {"Araona"}, ["arp"] = {"Arapaho"}, ["arq"] = {"Algerian Arabic"}, ["arr"] = {"Karo (Brazil)"}, ["ars"] = {"Najdi Arabic"}, ["art"] = {"Artificial languages"}, ["aru"] = {"Aruá (Amazonas State)", "Arawá"}, ["arv"] = {"Arbore"}, ["arw"] = {"Arawak"}, ["arx"] = {"Aruá (Rodonia State)"}, ["ary"] = {"Moroccan Arabic"}, ["arz"] = {"Egyptian Arabic"}, ["asa"] = {"Asu (Tanzania)"}, ["asb"] = {"Assiniboine"}, ["asc"] = {"Casuarina Coast Asmat"}, ["ase"] = {"American Sign Language"}, ["asf"] = {"Auslan", "Australian Sign Language"}, ["asg"] = {"Cishingini"}, ["ash"] = {"Abishira"}, ["asi"] = {"Buruwai"}, ["asj"] = {"Sari"}, ["ask"] = {"Ashkun"}, ["asl"] = {"Asilulu"}, ["asn"] = {"Xingú Asuriní"}, ["aso"] = {"Dano"}, ["asp"] = {"Algerian Sign Language"}, ["asq"] = {"Austrian Sign Language"}, ["asr"] = {"Asuri"}, ["ass"] = {"Ipulo"}, ["ast"] = {"Asturian", "Asturleonese", "Bable", "Leonese"}, ["asu"] = {"Tocantins Asurini"}, ["asv"] = {"Asoa"}, ["asw"] = {"Australian Aborigines Sign Language"}, ["asx"] = {"Muratayak"}, ["asy"] = {"Yaosakor Asmat"}, ["asz"] = {"As"}, ["ata"] = {"Pele-Ata"}, ["atb"] = {"Zaiwa"}, ["atc"] = {"Atsahuaca"}, ["atd"] = {"Ata Manobo"}, ["ate"] = {"Atemble"}, ["atg"] = {"Ivbie North-Okpela-Arhe"}, ["ath"] = {"Athapascan languages"}, ["ati"] = {"Attié"}, ["atj"] = {"Atikamekw"}, ["atk"] = {"Ati"}, ["atl"] = {"Mt. Iraya Agta"}, ["atm"] = {"Ata"}, ["atn"] = {"Ashtiani"}, ["ato"] = {"Atong (Cameroon)"}, ["atp"] = {"Pudtol Atta"}, ["atq"] = {"Aralle-Tabulahan"}, ["atr"] = {"Waimiri-Atroari"}, ["ats"] = {"Gros Ventre"}, ["att"] = {"Pamplona Atta"}, ["atu"] = {"Reel"}, ["atv"] = {"Northern Altai"}, ["atw"] = {"Atsugewi"}, ["atx"] = {"Arutani"}, ["aty"] = {"Aneityum"}, ["atz"] = {"Arta"}, ["aua"] = {"Asumboa"}, ["aub"] = {"Alugu"}, ["auc"] = {"Waorani"}, ["aud"] = {"Anuta"}, ["auf"] = {"Arauan languages"}, ["aug"] = {"Aguna"}, ["auh"] = {"Aushi"}, ["aui"] = {"Anuki"}, ["auj"] = {"Awjilah"}, ["auk"] = {"Heyo"}, ["aul"] = {"Aulua"}, ["aum"] = {"Asu (Nigeria)"}, ["aun"] = {"Molmo One"}, ["auo"] = {"Auyokawa"}, ["aup"] = {"Makayam"}, ["auq"] = {"Anus", "Korur"}, ["aur"] = {"Aruek"}, ["aus"] = {"Australian languages"}, ["aut"] = {"Austral"}, ["auu"] = {"Auye"}, ["auw"] = {"Awyi"}, ["aux"] = {"Aurá"}, ["auy"] = {"Awiyaana"}, ["auz"] = {"Uzbeki Arabic"}, ["avb"] = {"Avau"}, ["avd"] = {"Alviri-Vidari"}, ["avi"] = {"Avikam"}, ["avk"] = {"Kotava"}, ["avl"] = {"Eastern Egyptian Bedawi Arabic"}, ["avm"] = {"Angkamuthi"}, ["avn"] = {"Avatime"}, ["avo"] = {"Agavotaguerra"}, ["avs"] = {"Aushiri"}, ["avt"] = {"Au"}, ["avu"] = {"Avokaya"}, ["avv"] = {"Avá-Canoeiro"}, ["awa"] = {"Awadhi"}, ["awb"] = {"Awa (Papua New Guinea)"}, ["awc"] = {"Cicipu"}, ["awd"] = {"Arawakan languages"}, ["awe"] = {"Awetí"}, ["awg"] = {"Anguthimri"}, ["awh"] = {"Awbono"}, ["awi"] = {"Aekyom"}, ["awk"] = {"Awabakal"}, ["awm"] = {"Arawum"}, ["awn"] = {"Awngi"}, ["awo"] = {"Awak"}, ["awr"] = {"Awera"}, ["aws"] = {"South Awyu"}, ["awt"] = {"Araweté"}, ["awu"] = {"Central Awyu"}, ["awv"] = {"Jair Awyu"}, ["aww"] = {"Awun"}, ["awx"] = {"Awara"}, ["awy"] = {"Edera Awyu"}, ["axb"] = {"Abipon"}, ["axe"] = {"Ayerrerenge"}, ["axg"] = {"Mato Grosso Arára"}, ["axk"] = {"Yaka (Central African Republic)"}, ["axl"] = {"Lower Southern Aranda"}, ["axm"] = {"Middle Armenian"}, ["axx"] = {"Xârâgurè"}, ["aya"] = {"Awar"}, ["ayb"] = {"Ayizo Gbe"}, ["ayc"] = {"Southern Aymara"}, ["ayd"] = {"Ayabadhu"}, ["aye"] = {"Ayere"}, ["ayg"] = {"Ginyanga"}, ["ayh"] = {"Hadrami Arabic"}, ["ayi"] = {"Leyigha"}, ["ayk"] = {"Akuku"}, ["ayl"] = {"Libyan Arabic"}, ["ayn"] = {"Sanaani Arabic"}, ["ayo"] = {"Ayoreo"}, ["ayp"] = {"North Mesopotamian Arabic"}, ["ayq"] = {"Ayi (Papua New Guinea)"}, ["ayr"] = {"Central Aymara"}, ["ays"] = {"Sorsogon Ayta"}, ["ayt"] = {"Magbukun Ayta"}, ["ayu"] = {"Ayu"}, ["ayz"] = {"Mai Brat"}, ["aza"] = {"Azha"}, ["azb"] = {"South Azerbaijani"}, ["azc"] = {"Uto-Aztecan languages"}, ["azd"] = {"Eastern Durango Nahuatl"}, ["azg"] = {"San Pedro Amuzgos Amuzgo"}, ["azj"] = {"North Azerbaijani"}, ["azm"] = {"Ipalapa Amuzgo"}, ["azn"] = {"Western Durango Nahuatl"}, ["azo"] = {"Awing"}, ["azt"] = {"Faire Atta"}, ["azz"] = {"Highland Puebla Nahuatl"}, ["baa"] = {"Babatana"}, ["bab"] = {"Bainouk-Gunyuño"}, ["bac"] = {"Badui"}, ["bad"] = {"Banda languages"}, ["bae"] = {"Baré"}, ["baf"] = {"Nubaca"}, ["bag"] = {"Tuki"}, ["bah"] = {"Bahamas Creole English"}, ["bai"] = {"Bamileke languages"}, ["baj"] = {"Barakai"}, ["bal"] = {"Baluchi"}, ["ban"] = {"Balinese"}, ["bao"] = {"Waimaha"}, ["bap"] = {"Bantawa"}, ["bar"] = {"Bavarian"}, ["bas"] = {"Basa (Cameroon)"}, ["bat"] = {"Baltic languages"}, ["bau"] = {"Bada (Nigeria)"}, ["bav"] = {"Vengo"}, ["baw"] = {"Bambili-Bambui"}, ["bax"] = {"Bamun"}, ["bay"] = {"Batuley"}, ["bba"] = {"Baatonum"}, ["bbb"] = {"Barai"}, ["bbc"] = {"Batak Toba"}, ["bbd"] = {"Bau"}, ["bbe"] = {"Bangba"}, ["bbf"] = {"Baibai"}, ["bbg"] = {"Barama"}, ["bbh"] = {"Bugan"}, ["bbi"] = {"Barombi"}, ["bbj"] = {"Ghomálá'"}, ["bbk"] = {"Babanki"}, ["bbl"] = {"Bats"}, ["bbm"] = {"Babango"}, ["bbn"] = {"Uneapa"}, ["bbo"] = {"Northern Bobo Madaré", "Konabéré"}, ["bbp"] = {"West Central Banda"}, ["bbq"] = {"Bamali"}, ["bbr"] = {"Girawa"}, ["bbs"] = {"Bakpinka"}, ["bbt"] = {"Mburku"}, ["bbu"] = {"Kulung (Nigeria)"}, ["bbv"] = {"Karnai"}, ["bbw"] = {"Baba"}, ["bbx"] = {"Bubia"}, ["bby"] = {"Befang"}, ["bca"] = {"Central Bai"}, ["bcb"] = {"Bainouk-Samik"}, ["bcc"] = {"Southern Balochi"}, ["bcd"] = {"North Babar"}, ["bce"] = {"Bamenyam"}, ["bcf"] = {"Bamu"}, ["bcg"] = {"Baga Pokur"}, ["bch"] = {"Bariai"}, ["bci"] = {"Baoulé"}, ["bcj"] = {"Bardi"}, ["bck"] = {"Bunuba"}, ["bcl"] = {"Central Bikol"}, ["bcm"] = {"Bannoni"}, ["bcn"] = {"Bali (Nigeria)"}, ["bco"] = {"Kaluli"}, ["bcp"] = {"Bali (Democratic Republic of Congo)"}, ["bcq"] = {"Bench"}, ["bcr"] = {"Babine"}, ["bcs"] = {"Kohumono"}, ["bct"] = {"Bendi"}, ["bcu"] = {"Awad Bing"}, ["bcv"] = {"Shoo-Minda-Nye"}, ["bcw"] = {"Bana"}, ["bcy"] = {"Bacama"}, ["bcz"] = {"Bainouk-Gunyaamolo"}, ["bda"] = {"Bayot"}, ["bdb"] = {"Basap"}, ["bdc"] = {"Emberá-Baudó"}, ["bdd"] = {"Bunama"}, ["bde"] = {"Bade"}, ["bdf"] = {"Biage"}, ["bdg"] = {"Bonggi"}, ["bdh"] = {"Baka (South Sudan)"}, ["bdi"] = {"Burun"}, ["bdj"] = {"Bai (South Sudan)", "Bai"}, ["bdk"] = {"Budukh"}, ["bdl"] = {"Indonesian Bajau"}, ["bdm"] = {"Buduma"}, ["bdn"] = {"Baldemu"}, ["bdo"] = {"Morom"}, ["bdp"] = {"Bende"}, ["bdq"] = {"Bahnar"}, ["bdr"] = {"West Coast Bajau"}, ["bds"] = {"Burunge"}, ["bdt"] = {"Bokoto"}, ["bdu"] = {"Oroko"}, ["bdv"] = {"Bodo Parja"}, ["bdw"] = {"Baham"}, ["bdx"] = {"Budong-Budong"}, ["bdy"] = {"Bandjalang"}, ["bdz"] = {"Badeshi"}, ["bea"] = {"Beaver"}, ["beb"] = {"Bebele"}, ["bec"] = {"Iceve-Maci"}, ["bed"] = {"Bedoanas"}, ["bee"] = {"Byangsi"}, ["bef"] = {"Benabena"}, ["beg"] = {"Belait"}, ["beh"] = {"Biali"}, ["bei"] = {"Bekati'"}, ["bej"] = {"Beja", "Bedawiyet"}, ["bek"] = {"Bebeli"}, ["bem"] = {"Bemba (Zambia)"}, ["beo"] = {"Beami"}, ["bep"] = {"Besoa"}, ["beq"] = {"Beembe"}, ["ber"] = {"Berber languages"}, ["bes"] = {"Besme"}, ["bet"] = {"Guiberoua Béte"}, ["beu"] = {"Blagar"}, ["bev"] = {"Daloa Bété"}, ["bew"] = {"Betawi"}, ["bex"] = {"Jur Modo"}, ["bey"] = {"Beli (Papua New Guinea)"}, ["bez"] = {"Bena (Tanzania)"}, ["bfa"] = {"Bari"}, ["bfb"] = {"Pauri Bareli"}, ["bfc"] = {"Panyi Bai", "Northern Bai"}, ["bfd"] = {"Bafut"}, ["bfe"] = {"Betaf", "Tena"}, ["bff"] = {"Bofi"}, ["bfg"] = {"Busang Kayan"}, ["bfh"] = {"Blafe"}, ["bfi"] = {"British Sign Language"}, ["bfj"] = {"Bafanji"}, ["bfk"] = {"Ban Khor Sign Language"}, ["bfl"] = {"Banda-Ndélé"}, ["bfm"] = {"Mmen"}, ["bfn"] = {"Bunak"}, ["bfo"] = {"Malba Birifor"}, ["bfp"] = {"Beba"}, ["bfq"] = {"Badaga"}, ["bfr"] = {"Bazigar"}, ["bfs"] = {"Southern Bai"}, ["bft"] = {"Balti"}, ["bfu"] = {"Gahri"}, ["bfw"] = {"Bondo"}, ["bfx"] = {"Bantayanon"}, ["bfy"] = {"Bagheli"}, ["bfz"] = {"Mahasu Pahari"}, ["bga"] = {"Gwamhi-Wuri"}, ["bgb"] = {"Bobongko"}, ["bgc"] = {"Haryanvi"}, ["bgd"] = {"Rathwi Bareli"}, ["bge"] = {"Bauria"}, ["bgf"] = {"Bangandu"}, ["bgg"] = {"Bugun"}, ["bgi"] = {"Giangan"}, ["bgj"] = {"Bangolan"}, ["bgk"] = {"Bit", "Buxinhua"}, ["bgl"] = {"Bo (Laos)"}, ["bgn"] = {"Western Balochi"}, ["bgo"] = {"Baga Koga"}, ["bgp"] = {"Eastern Balochi"}, ["bgq"] = {"Bagri"}, ["bgr"] = {"Bawm Chin"}, ["bgs"] = {"Tagabawa"}, ["bgt"] = {"Bughotu"}, ["bgu"] = {"Mbongno"}, ["bgv"] = {"Warkay-Bipim"}, ["bgw"] = {"Bhatri"}, ["bgx"] = {"Balkan Gagauz Turkish"}, ["bgy"] = {"Benggoi"}, ["bgz"] = {"Banggai"}, ["bha"] = {"Bharia"}, ["bhb"] = {"Bhili"}, ["bhc"] = {"Biga"}, ["bhd"] = {"Bhadrawahi"}, ["bhe"] = {"Bhaya"}, ["bhf"] = {"Odiai"}, ["bhg"] = {"Binandere"}, ["bhh"] = {"Bukharic"}, ["bhi"] = {"Bhilali"}, ["bhj"] = {"Bahing"}, ["bhl"] = {"Bimin"}, ["bhm"] = {"Bathari"}, ["bhn"] = {"Bohtan Neo-Aramaic"}, ["bho"] = {"Bhojpuri"}, ["bhp"] = {"Bima"}, ["bhq"] = {"Tukang Besi South"}, ["bhr"] = {"Bara Malagasy"}, ["bhs"] = {"Buwal"}, ["bht"] = {"Bhattiyali"}, ["bhu"] = {"Bhunjia"}, ["bhv"] = {"Bahau"}, ["bhw"] = {"Biak"}, ["bhx"] = {"Bhalay"}, ["bhy"] = {"Bhele"}, ["bhz"] = {"Bada (Indonesia)"}, ["bia"] = {"Badimaya"}, ["bib"] = {"Bissa", "Bisa"}, ["bid"] = {"Bidiyo"}, ["bie"] = {"Bepour"}, ["bif"] = {"Biafada"}, ["big"] = {"Biangai"}, ["bik"] = {"Bikol"}, ["bil"] = {"Bile"}, ["bim"] = {"Bimoba"}, ["bin"] = {"Bini", "Edo"}, ["bio"] = {"Nai"}, ["bip"] = {"Bila"}, ["biq"] = {"Bipi"}, ["bir"] = {"Bisorio"}, ["bit"] = {"Berinomo"}, ["biu"] = {"Biete"}, ["biv"] = {"Southern Birifor"}, ["biw"] = {"Kol (Cameroon)"}, ["bix"] = {"Bijori"}, ["biy"] = {"Birhor"}, ["biz"] = {"Baloi"}, ["bja"] = {"Budza"}, ["bjb"] = {"Banggarla"}, ["bjc"] = {"Bariji"}, ["bje"] = {"Biao-Jiao Mien"}, ["bjf"] = {"Barzani Jewish Neo-Aramaic"}, ["bjg"] = {"Bidyogo"}, ["bjh"] = {"Bahinemo"}, ["bji"] = {"Burji"}, ["bjj"] = {"Kanauji"}, ["bjk"] = {"Barok"}, ["bjl"] = {"Bulu (Papua New Guinea)"}, ["bjm"] = {"Bajelani"}, ["bjn"] = {"Banjar"}, ["bjo"] = {"Mid-Southern Banda"}, ["bjp"] = {"Fanamaket"}, ["bjr"] = {"Binumarien"}, ["bjs"] = {"Bajan"}, ["bjt"] = {"Balanta-Ganja"}, ["bju"] = {"Busuu"}, ["bjv"] = {"Bedjond"}, ["bjw"] = {"Bakwé"}, ["bjx"] = {"Banao Itneg"}, ["bjy"] = {"Bayali"}, ["bjz"] = {"Baruga"}, ["bka"] = {"Kyak"}, ["bkc"] = {"Baka (Cameroon)"}, ["bkd"] = {"Binukid", "Talaandig"}, ["bkf"] = {"Beeke"}, ["bkg"] = {"Buraka"}, ["bkh"] = {"Bakoko"}, ["bki"] = {"Baki"}, ["bkj"] = {"Pande"}, ["bkk"] = {"Brokskat"}, ["bkl"] = {"Berik"}, ["bkm"] = {"Kom (Cameroon)"}, ["bkn"] = {"Bukitan"}, ["bko"] = {"Kwa'"}, ["bkp"] = {"Boko (Democratic Republic of Congo)"}, ["bkq"] = {"Bakairí"}, ["bkr"] = {"Bakumpai"}, ["bks"] = {"Northern Sorsoganon"}, ["bkt"] = {"Boloki"}, ["bku"] = {"Buhid"}, ["bkv"] = {"Bekwarra"}, ["bkw"] = {"Bekwel"}, ["bkx"] = {"Baikeno"}, ["bky"] = {"Bokyi"}, ["bkz"] = {"Bungku"}, ["bla"] = {"Siksika"}, ["blb"] = {"Bilua"}, ["blc"] = {"Bella Coola"}, ["bld"] = {"Bolango"}, ["ble"] = {"Balanta-Kentohe"}, ["blf"] = {"Buol"}, ["blh"] = {"Kuwaa"}, ["bli"] = {"Bolia"}, ["blj"] = {"Bolongan"}, ["blk"] = {"Pa'o Karen", "Pa'O"}, ["bll"] = {"Biloxi"}, ["blm"] = {"Beli (South Sudan)"}, ["bln"] = {"Southern Catanduanes Bikol"}, ["blo"] = {"Anii"}, ["blp"] = {"Blablanga"}, ["blq"] = {"Baluan-Pam"}, ["blr"] = {"Blang"}, ["bls"] = {"Balaesang"}, ["blt"] = {"Tai Dam"}, ["blv"] = {"Kibala", "Bolo"}, ["blw"] = {"Balangao"}, ["blx"] = {"Mag-Indi Ayta"}, ["bly"] = {"Notre"}, ["blz"] = {"Balantak"}, ["bma"] = {"Lame"}, ["bmb"] = {"Bembe"}, ["bmc"] = {"Biem"}, ["bmd"] = {"Baga Manduri"}, ["bme"] = {"Limassa"}, ["bmf"] = {"Bom-Kim"}, ["bmg"] = {"Bamwe"}, ["bmh"] = {"Kein"}, ["bmi"] = {"Bagirmi"}, ["bmj"] = {"Bote-Majhi"}, ["bmk"] = {"Ghayavi"}, ["bml"] = {"Bomboli"}, ["bmm"] = {"Northern Betsimisaraka Malagasy"}, ["bmn"] = {"Bina (Papua New Guinea)"}, ["bmo"] = {"Bambalang"}, ["bmp"] = {"Bulgebi"}, ["bmq"] = {"Bomu"}, ["bmr"] = {"Muinane"}, ["bms"] = {"Bilma Kanuri"}, ["bmt"] = {"Biao Mon"}, ["bmu"] = {"Somba-Siawari"}, ["bmv"] = {"Bum"}, ["bmw"] = {"Bomwali"}, ["bmx"] = {"Baimak"}, ["bmz"] = {"Baramu"}, ["bna"] = {"Bonerate"}, ["bnb"] = {"Bookan"}, ["bnc"] = {"Bontok"}, ["bnd"] = {"Banda (Indonesia)"}, ["bne"] = {"Bintauna"}, ["bnf"] = {"Masiwang"}, ["bng"] = {"Benga"}, ["bni"] = {"Bangi"}, ["bnj"] = {"Eastern Tawbuid"}, ["bnk"] = {"Bierebo"}, ["bnl"] = {"Boon"}, ["bnm"] = {"Batanga"}, ["bnn"] = {"Bunun"}, ["bno"] = {"Bantoanon"}, ["bnp"] = {"Bola"}, ["bnq"] = {"Bantik"}, ["bnr"] = {"Butmas-Tur"}, ["bns"] = {"Bundeli"}, ["bnt"] = {"Bantu languages"}, ["bnu"] = {"Bentong"}, ["bnv"] = {"Bonerif", "Beneraf", "Edwas"}, ["bnw"] = {"Bisis"}, ["bnx"] = {"Bangubangu"}, ["bny"] = {"Bintulu"}, ["bnz"] = {"Beezen"}, ["boa"] = {"Bora"}, ["bob"] = {"Aweer"}, ["boe"] = {"Mundabli"}, ["bof"] = {"Bolon"}, ["bog"] = {"Bamako Sign Language"}, ["boh"] = {"Boma"}, ["boi"] = {"Barbareño"}, ["boj"] = {"Anjam"}, ["bok"] = {"Bonjo"}, ["bol"] = {"Bole"}, ["bom"] = {"Berom"}, ["bon"] = {"Bine"}, ["boo"] = {"Tiemacèwè Bozo"}, ["bop"] = {"Bonkiman"}, ["boq"] = {"Bogaya"}, ["bor"] = {"Borôro"}, ["bot"] = {"Bongo"}, ["bou"] = {"Bondei"}, ["bov"] = {"Tuwuli"}, ["bow"] = {"Rema"}, ["box"] = {"Buamu"}, ["boy"] = {"Bodo (Central African Republic)"}, ["boz"] = {"Tiéyaxo Bozo"}, ["bpa"] = {"Daakaka"}, ["bpc"] = {"Mbuk"}, ["bpd"] = {"Banda-Banda"}, ["bpe"] = {"Bauni"}, ["bpg"] = {"Bonggo"}, ["bph"] = {"Botlikh"}, ["bpi"] = {"Bagupi"}, ["bpj"] = {"Binji"}, ["bpk"] = {"Orowe", "'Ôrôê"}, ["bpl"] = {"Broome Pearling Lugger Pidgin"}, ["bpm"] = {"Biyom"}, ["bpn"] = {"Dzao Min"}, ["bpo"] = {"Anasi"}, ["bpp"] = {"Kaure"}, ["bpq"] = {"Banda Malay"}, ["bpr"] = {"Koronadal Blaan"}, ["bps"] = {"Sarangani Blaan"}, ["bpt"] = {"Barrow Point"}, ["bpu"] = {"Bongu"}, ["bpv"] = {"Bian Marind"}, ["bpw"] = {"Bo (Papua New Guinea)"}, ["bpx"] = {"Palya Bareli"}, ["bpy"] = {"Bishnupriya"}, ["bpz"] = {"Bilba"}, ["bqa"] = {"Tchumbuli"}, ["bqb"] = {"Bagusa"}, ["bqc"] = {"Boko (Benin)", "Boo"}, ["bqd"] = {"Bung"}, ["bqf"] = {"Baga Kaloum"}, ["bqg"] = {"Bago-Kusuntu"}, ["bqh"] = {"Baima"}, ["bqi"] = {"Bakhtiari"}, ["bqj"] = {"Bandial"}, ["bqk"] = {"Banda-Mbrès"}, ["bql"] = {"Bilakura"}, ["bqm"] = {"Wumboko"}, ["bqn"] = {"Bulgarian Sign Language"}, ["bqo"] = {"Balo"}, ["bqp"] = {"Busa"}, ["bqq"] = {"Biritai"}, ["bqr"] = {"Burusu"}, ["bqs"] = {"Bosngun"}, ["bqt"] = {"Bamukumbit"}, ["bqu"] = {"Boguru"}, ["bqv"] = {"Koro Wachi", "Begbere-Ejar"}, ["bqw"] = {"Buru (Nigeria)"}, ["bqx"] = {"Baangi"}, ["bqy"] = {"Bengkala Sign Language"}, ["bqz"] = {"Bakaka"}, ["bra"] = {"Braj"}, ["brb"] = {"Brao", "Lave"}, ["brc"] = {"Berbice Creole Dutch"}, ["brd"] = {"Baraamu"}, ["brf"] = {"Bira"}, ["brg"] = {"Baure"}, ["brh"] = {"Brahui"}, ["bri"] = {"Mokpwe"}, ["brj"] = {"Bieria"}, ["brk"] = {"Birked"}, ["brl"] = {"Birwa"}, ["brm"] = {"Barambu"}, ["brn"] = {"Boruca"}, ["bro"] = {"Brokkat"}, ["brp"] = {"Barapasi"}, ["brq"] = {"Breri"}, ["brr"] = {"Birao"}, ["brs"] = {"Baras"}, ["brt"] = {"Bitare"}, ["bru"] = {"Eastern Bru"}, ["brv"] = {"Western Bru"}, ["brw"] = {"Bellari"}, ["brx"] = {"Bodo (India)"}, ["bry"] = {"Burui"}, ["brz"] = {"Bilbil"}, ["bsa"] = {"Abinomn"}, ["bsb"] = {"Brunei Bisaya"}, ["bsc"] = {"Bassari", "Oniyan"}, ["bse"] = {"Wushi"}, ["bsf"] = {"Bauchi"}, ["bsg"] = {"Bashkardi"}, ["bsh"] = {"Kati"}, ["bsi"] = {"Bassossi"}, ["bsj"] = {"Bangwinji"}, ["bsk"] = {"Burushaski"}, ["bsl"] = {"Basa-Gumna"}, ["bsm"] = {"Busami"}, ["bsn"] = {"Barasana-Eduria"}, ["bso"] = {"Buso"}, ["bsp"] = {"Baga Sitemu"}, ["bsq"] = {"Bassa"}, ["bsr"] = {"Bassa-Kontagora"}, ["bss"] = {"Akoose"}, ["bst"] = {"Basketo"}, ["bsu"] = {"Bahonsuai"}, ["bsv"] = {"Baga Sobané"}, ["bsw"] = {"Baiso"}, ["bsx"] = {"Yangkam"}, ["bsy"] = {"Sabah Bisaya"}, ["bta"] = {"Bata"}, ["btc"] = {"Bati (Cameroon)"}, ["btd"] = {"Batak Dairi"}, ["bte"] = {"Gamo-Ningi"}, ["btf"] = {"Birgit"}, ["btg"] = {"Gagnoa Bété"}, ["bth"] = {"Biatah Bidayuh"}, ["bti"] = {"Burate"}, ["btj"] = {"Bacanese Malay"}, ["btk"] = {"Batak languages"}, ["btm"] = {"Batak Mandailing"}, ["btn"] = {"Ratagnon"}, ["bto"] = {"Rinconada Bikol"}, ["btp"] = {"Budibud"}, ["btq"] = {"Batek"}, ["btr"] = {"Baetora"}, ["bts"] = {"Batak Simalungun"}, ["btt"] = {"Bete-Bendi"}, ["btu"] = {"Batu"}, ["btv"] = {"Bateri"}, ["btw"] = {"Butuanon"}, ["btx"] = {"Batak Karo"}, ["bty"] = {"Bobot"}, ["btz"] = {"Batak Alas-Kluet"}, ["bua"] = {"Buriat"}, ["bub"] = {"Bua"}, ["buc"] = {"Bushi"}, ["bud"] = {"Ntcham"}, ["bue"] = {"Beothuk"}, ["buf"] = {"Bushoong"}, ["bug"] = {"Buginese"}, ["buh"] = {"Younuo Bunu"}, ["bui"] = {"Bongili"}, ["buj"] = {"Basa-Gurmana"}, ["buk"] = {"Bugawac"}, ["bum"] = {"Bulu (Cameroon)"}, ["bun"] = {"Sherbro"}, ["buo"] = {"Terei"}, ["bup"] = {"Busoa"}, ["buq"] = {"Brem"}, ["bus"] = {"Bokobaru"}, ["but"] = {"Bungain"}, ["buu"] = {"Budu"}, ["buv"] = {"Bun"}, ["buw"] = {"Bubi"}, ["bux"] = {"Boghom"}, ["buy"] = {"Bullom So"}, ["buz"] = {"Bukwen"}, ["bva"] = {"Barein"}, ["bvb"] = {"Bube"}, ["bvc"] = {"Baelelea"}, ["bvd"] = {"Baeggu"}, ["bve"] = {"Berau Malay"}, ["bvf"] = {"Boor"}, ["bvg"] = {"Bonkeng"}, ["bvh"] = {"Bure"}, ["bvi"] = {"Belanda Viri"}, ["bvj"] = {"Baan"}, ["bvk"] = {"Bukat"}, ["bvl"] = {"Bolivian Sign Language"}, ["bvm"] = {"Bamunka"}, ["bvn"] = {"Buna"}, ["bvo"] = {"Bolgo"}, ["bvp"] = {"Bumang"}, ["bvq"] = {"Birri"}, ["bvr"] = {"Burarra"}, ["bvt"] = {"Bati (Indonesia)"}, ["bvu"] = {"Bukit Malay"}, ["bvv"] = {"Baniva"}, ["bvw"] = {"Boga"}, ["bvx"] = {"Dibole"}, ["bvy"] = {"Baybayanon"}, ["bvz"] = {"Bauzi"}, ["bwa"] = {"Bwatoo"}, ["bwb"] = {"Namosi-Naitasiri-Serua"}, ["bwc"] = {"Bwile"}, ["bwd"] = {"Bwaidoka"}, ["bwe"] = {"Bwe Karen"}, ["bwf"] = {"Boselewa"}, ["bwg"] = {"Barwe"}, ["bwh"] = {"Bishuo"}, ["bwi"] = {"Baniwa"}, ["bwj"] = {"Láá Láá Bwamu"}, ["bwk"] = {"Bauwaki"}, ["bwl"] = {"Bwela"}, ["bwm"] = {"Biwat"}, ["bwn"] = {"Wunai Bunu"}, ["bwo"] = {"Boro (Ethiopia)", "Borna (Ethiopia)"}, ["bwp"] = {"Mandobo Bawah"}, ["bwq"] = {"Southern Bobo Madaré"}, ["bwr"] = {"Bura-Pabir"}, ["bws"] = {"Bomboma"}, ["bwt"] = {"Bafaw-Balong"}, ["bwu"] = {"Buli (Ghana)"}, ["bww"] = {"Bwa"}, ["bwx"] = {"Bu-Nao Bunu"}, ["bwy"] = {"Cwi Bwamu"}, ["bwz"] = {"Bwisi"}, ["bxa"] = {"Tairaha"}, ["bxb"] = {"Belanda Bor"}, ["bxc"] = {"Molengue"}, ["bxd"] = {"Pela"}, ["bxe"] = {"Birale"}, ["bxf"] = {"Bilur", "Minigir"}, ["bxg"] = {"Bangala"}, ["bxh"] = {"Buhutu"}, ["bxi"] = {"Pirlatapa"}, ["bxj"] = {"Bayungu"}, ["bxk"] = {"Bukusu", "Lubukusu"}, ["bxl"] = {"Jalkunan"}, ["bxm"] = {"Mongolia Buriat"}, ["bxn"] = {"Burduna"}, ["bxo"] = {"Barikanchi"}, ["bxp"] = {"Bebil"}, ["bxq"] = {"Beele"}, ["bxr"] = {"Russia Buriat"}, ["bxs"] = {"Busam"}, ["bxu"] = {"China Buriat"}, ["bxv"] = {"Berakou"}, ["bxw"] = {"Bankagooma"}, ["bxz"] = {"Binahari"}, ["bya"] = {"Batak"}, ["byb"] = {"Bikya"}, ["byc"] = {"Ubaghara"}, ["byd"] = {"Benyadu'"}, ["bye"] = {"Pouye"}, ["byf"] = {"Bete"}, ["byg"] = {"Baygo"}, ["byh"] = {"Bhujel"}, ["byi"] = {"Buyu"}, ["byj"] = {"Bina (Nigeria)"}, ["byk"] = {"Biao"}, ["byl"] = {"Bayono"}, ["bym"] = {"Bidjara"}, ["byn"] = {"Bilin", "Blin"}, ["byo"] = {"Biyo"}, ["byp"] = {"Bumaji"}, ["byq"] = {"Basay"}, ["byr"] = {"Baruya", "Yipma"}, ["bys"] = {"Burak"}, ["byt"] = {"Berti"}, ["byv"] = {"Medumba"}, ["byw"] = {"Belhariya"}, ["byx"] = {"Qaqet"}, ["byz"] = {"Banaro"}, ["bza"] = {"Bandi"}, ["bzb"] = {"Andio"}, ["bzc"] = {"Southern Betsimisaraka Malagasy"}, ["bzd"] = {"Bribri"}, ["bze"] = {"Jenaama Bozo"}, ["bzf"] = {"Boikin"}, ["bzg"] = {"Babuza"}, ["bzh"] = {"Mapos Buang"}, ["bzi"] = {"Bisu"}, ["bzj"] = {"Belize Kriol English"}, ["bzk"] = {"Nicaragua Creole English"}, ["bzl"] = {"Boano (Sulawesi)"}, ["bzm"] = {"Bolondo"}, ["bzn"] = {"Boano (Maluku)"}, ["bzo"] = {"Bozaba"}, ["bzp"] = {"Kemberano"}, ["bzq"] = {"Buli (Indonesia)"}, ["bzr"] = {"Biri"}, ["bzs"] = {"Brazilian Sign Language"}, ["bzt"] = {"Brithenig"}, ["bzu"] = {"Burmeso"}, ["bzv"] = {"Naami"}, ["bzw"] = {"Basa (Nigeria)"}, ["bzx"] = {"Kɛlɛngaxo Bozo"}, ["bzy"] = {"Obanliku"}, ["bzz"] = {"Evant"}, ["caa"] = {"Chortí"}, ["cab"] = {"Garifuna"}, ["cac"] = {"Chuj"}, ["cad"] = {"Caddo"}, ["cae"] = {"Lehar", "Laalaa"}, ["caf"] = {"Southern Carrier"}, ["cag"] = {"Nivaclé"}, ["cah"] = {"Cahuarano"}, ["cai"] = {"Central American Indian languages"}, ["caj"] = {"Chané"}, ["cak"] = {"Kaqchikel", "Cakchiquel"}, ["cal"] = {"Carolinian"}, ["cam"] = {"Cemuhî"}, ["can"] = {"Chambri"}, ["cao"] = {"Chácobo"}, ["cap"] = {"Chipaya"}, ["caq"] = {"Car Nicobarese"}, ["car"] = {"Galibi Carib"}, ["cas"] = {"Tsimané"}, ["cau"] = {"Caucasian languages"}, ["cav"] = {"Cavineña"}, ["caw"] = {"Callawalla"}, ["cax"] = {"Chiquitano"}, ["cay"] = {"Cayuga"}, ["caz"] = {"Canichana"}, ["cba"] = {"Chibchan languages"}, ["cbb"] = {"Cabiyarí"}, ["cbc"] = {"Carapana"}, ["cbd"] = {"Carijona"}, ["cbg"] = {"Chimila"}, ["cbi"] = {"Chachi"}, ["cbj"] = {"Ede Cabe"}, ["cbk"] = {"Chavacano"}, ["cbl"] = {"Bualkhaw Chin"}, ["cbn"] = {"Nyahkur"}, ["cbo"] = {"Izora"}, ["cbq"] = {"Tsucuba", "Cuba"}, ["cbr"] = {"Cashibo-Cacataibo"}, ["cbs"] = {"Cashinahua"}, ["cbt"] = {"Chayahuita"}, ["cbu"] = {"Candoshi-Shapra"}, ["cbv"] = {"Cacua"}, ["cbw"] = {"Kinabalian"}, ["cby"] = {"Carabayo"}, ["ccc"] = {"Chamicuro"}, ["ccd"] = {"Cafundo Creole"}, ["cce"] = {"Chopi"}, ["ccg"] = {"Samba Daka"}, ["cch"] = {"Atsam"}, ["ccj"] = {"Kasanga"}, ["ccl"] = {"Cutchi-Swahili"}, ["ccm"] = {"Malaccan Creole Malay"}, ["ccn"] = {"North Caucasian languages"}, ["cco"] = {"Comaltepec Chinantec"}, ["ccp"] = {"Chakma"}, ["ccr"] = {"Cacaopera"}, ["ccs"] = {"South Caucasian languages"}, ["cda"] = {"Choni"}, ["cdc"] = {"Chadic languages"}, ["cdd"] = {"Caddoan languages"}, ["cde"] = {"Chenchu"}, ["cdf"] = {"Chiru"}, ["cdh"] = {"Chambeali"}, ["cdi"] = {"Chodri"}, ["cdj"] = {"Churahi"}, ["cdm"] = {"Chepang"}, ["cdn"] = {"Chaudangsi"}, ["cdo"] = {"Min Dong Chinese"}, ["cdr"] = {"Cinda-Regi-Tiyal"}, ["cds"] = {"Chadian Sign Language"}, ["cdy"] = {"Chadong"}, ["cdz"] = {"Koda"}, ["cea"] = {"Lower Chehalis"}, ["ceb"] = {"Cebuano"}, ["ceg"] = {"Chamacoco"}, ["cek"] = {"Eastern Khumi Chin"}, ["cel"] = {"Celtic languages"}, ["cen"] = {"Cen"}, ["cet"] = {"Centúúm"}, ["cey"] = {"Ekai Chin"}, ["cfa"] = {"Dijim-Bwilim"}, ["cfd"] = {"Cara"}, ["cfg"] = {"Como Karim"}, ["cfm"] = {"Falam Chin"}, ["cga"] = {"Changriwa"}, ["cgc"] = {"Kagayanen"}, ["cgg"] = {"Chiga"}, ["cgk"] = {"Chocangacakha"}, ["chb"] = {"Chibcha"}, ["chc"] = {"Catawba"}, ["chd"] = {"Highland Oaxaca Chontal"}, ["chf"] = {"Tabasco Chontal"}, ["chg"] = {"Chagatai"}, ["chh"] = {"Chinook"}, ["chj"] = {"Ojitlán Chinantec"}, ["chk"] = {"Chuukese"}, ["chl"] = {"Cahuilla"}, ["chm"] = {"Mari (Russia)"}, ["chn"] = {"Chinook jargon"}, ["cho"] = {"Choctaw"}, ["chp"] = {"Chipewyan", "Dene Suline"}, ["chq"] = {"Quiotepec Chinantec"}, ["chr"] = {"Cherokee"}, ["cht"] = {"Cholón"}, ["chw"] = {"Chuwabu"}, ["chx"] = {"Chantyal"}, ["chy"] = {"Cheyenne"}, ["chz"] = {"Ozumacín Chinantec"}, ["cia"] = {"Cia-Cia"}, ["cib"] = {"Ci Gbe"}, ["cic"] = {"Chickasaw"}, ["cid"] = {"Chimariko"}, ["cie"] = {"Cineni"}, ["cih"] = {"Chinali"}, ["cik"] = {"Chitkuli Kinnauri"}, ["cim"] = {"Cimbrian"}, ["cin"] = {"Cinta Larga"}, ["cip"] = {"Chiapanec"}, ["cir"] = {"Tiri", "Haméa", "Méa"}, ["ciw"] = {"Chippewa"}, ["ciy"] = {"Chaima"}, ["cja"] = {"Western Cham"}, ["cje"] = {"Chru"}, ["cjh"] = {"Upper Chehalis"}, ["cji"] = {"Chamalal"}, ["cjk"] = {"Chokwe"}, ["cjm"] = {"Eastern Cham"}, ["cjn"] = {"Chenapian"}, ["cjo"] = {"Ashéninka Pajonal"}, ["cjp"] = {"Cabécar"}, ["cjs"] = {"Shor"}, ["cjv"] = {"Chuave"}, ["cjy"] = {"Jinyu Chinese"}, ["ckb"] = {"Central Kurdish"}, ["ckh"] = {"Chak"}, ["ckl"] = {"Cibak"}, ["ckm"] = {"Chakavian"}, ["ckn"] = {"Kaang Chin"}, ["cko"] = {"Anufo"}, ["ckq"] = {"Kajakse"}, ["ckr"] = {"Kairak"}, ["cks"] = {"Tayo"}, ["ckt"] = {"Chukot"}, ["cku"] = {"Koasati"}, ["ckv"] = {"Kavalan"}, ["ckx"] = {"Caka"}, ["cky"] = {"Cakfem-Mushere"}, ["ckz"] = {"Cakchiquel-Quiché Mixed Language"}, ["cla"] = {"Ron"}, ["clc"] = {"Chilcotin"}, ["cld"] = {"Chaldean Neo-Aramaic"}, ["cle"] = {"Lealao Chinantec"}, ["clh"] = {"Chilisso"}, ["cli"] = {"Chakali"}, ["clj"] = {"Laitu Chin"}, ["clk"] = {"Idu-Mishmi"}, ["cll"] = {"Chala"}, ["clm"] = {"Clallam"}, ["clo"] = {"Lowland Oaxaca Chontal"}, ["clt"] = {"Lautu Chin"}, ["clu"] = {"Caluyanun"}, ["clw"] = {"Chulym"}, ["cly"] = {"Eastern Highland Chatino"}, ["cma"] = {"Maa"}, ["cmc"] = {"Chamic languages"}, ["cme"] = {"Cerma"}, ["cmg"] = {"Classical Mongolian"}, ["cmi"] = {"Emberá-Chamí"}, ["cml"] = {"Campalagian"}, ["cmm"] = {"Michigamea"}, ["cmn"] = {"Mandarin Chinese"}, ["cmo"] = {"Central Mnong"}, ["cmr"] = {"Mro-Khimi Chin"}, ["cms"] = {"Messapic"}, ["cmt"] = {"Camtho"}, ["cna"] = {"Changthang"}, ["cnb"] = {"Chinbon Chin"}, ["cnc"] = {"Côông"}, ["cng"] = {"Northern Qiang"}, ["cnh"] = {"Hakha Chin", "Haka Chin"}, ["cni"] = {"Asháninka"}, ["cnk"] = {"Khumi Chin"}, ["cnl"] = {"Lalana Chinantec"}, ["cno"] = {"Con"}, ["cnp"] = {"Northern Ping Chinese", "Northern Pinghua"}, ["cnq"] = {"Chung"}, ["cnr"] = {"Montenegrin"}, ["cns"] = {"Central Asmat"}, ["cnt"] = {"Tepetotutla Chinantec"}, ["cnu"] = {"Chenoua"}, ["cnw"] = {"Ngawn Chin"}, ["cnx"] = {"Middle Cornish"}, ["coa"] = {"Cocos Islands Malay"}, ["cob"] = {"Chicomuceltec"}, ["coc"] = {"Cocopa"}, ["cod"] = {"Cocama-Cocamilla"}, ["coe"] = {"Koreguaje"}, ["cof"] = {"Colorado"}, ["cog"] = {"Chong"}, ["coh"] = {"Chonyi-Dzihana-Kauma", "Chichonyi-Chidzihana-Chikauma"}, ["coj"] = {"Cochimi"}, ["cok"] = {"Santa Teresa Cora"}, ["col"] = {"Columbia-Wenatchi"}, ["com"] = {"Comanche"}, ["con"] = {"Cofán"}, ["coo"] = {"Comox"}, ["cop"] = {"Coptic"}, ["coq"] = {"Coquille"}, ["cot"] = {"Caquinte"}, ["cou"] = {"Wamey"}, ["cov"] = {"Cao Miao"}, ["cow"] = {"Cowlitz"}, ["cox"] = {"Nanti"}, ["coz"] = {"Chochotec"}, ["cpa"] = {"Palantla Chinantec"}, ["cpb"] = {"Ucayali-Yurúa Ashéninka"}, ["cpc"] = {"Ajyíninka Apurucayali"}, ["cpe"] = {"English-based creoles and pidgins"}, ["cpf"] = {"French-based creoles and pidgins"}, ["cpg"] = {"Cappadocian Greek"}, ["cpi"] = {"Chinese Pidgin English"}, ["cpn"] = {"Cherepon"}, ["cpo"] = {"Kpeego"}, ["cpp"] = {"Portuguese-based creoles and pidgins"}, ["cps"] = {"Capiznon"}, ["cpu"] = {"Pichis Ashéninka"}, ["cpx"] = {"Pu-Xian Chinese"}, ["cpy"] = {"South Ucayali Ashéninka"}, ["cqd"] = {"Chuanqiandian Cluster Miao"}, ["cra"] = {"Chara"}, ["crb"] = {"Island Carib"}, ["crc"] = {"Lonwolwol"}, ["crd"] = {"Coeur d'Alene"}, ["crf"] = {"Caramanta"}, ["crg"] = {"Michif"}, ["crh"] = {"Crimean Tatar", "Crimean Turkish"}, ["cri"] = {"Sãotomense"}, ["crj"] = {"Southern East Cree"}, ["crk"] = {"Plains Cree"}, ["crl"] = {"Northern East Cree"}, ["crm"] = {"Moose Cree"}, ["crn"] = {"El Nayar Cora"}, ["cro"] = {"Crow"}, ["crp"] = {"Creoles and pidgins"}, ["crq"] = {"Iyo'wujwa Chorote"}, ["crr"] = {"Carolina Algonquian"}, ["crs"] = {"Seselwa Creole French"}, ["crt"] = {"Iyojwa'ja Chorote"}, ["crv"] = {"Chaura"}, ["crw"] = {"Chrau"}, ["crx"] = {"Carrier"}, ["cry"] = {"Cori"}, ["crz"] = {"Cruzeño"}, ["csa"] = {"Chiltepec Chinantec"}, ["csb"] = {"Kashubian"}, ["csc"] = {"Catalan Sign Language", "Lengua de señas catalana", "Llengua de Signes Catalana"}, ["csd"] = {"Chiangmai Sign Language"}, ["cse"] = {"Czech Sign Language"}, ["csf"] = {"Cuba Sign Language"}, ["csg"] = {"Chilean Sign Language"}, ["csh"] = {"Asho Chin"}, ["csi"] = {"Coast Miwok"}, ["csj"] = {"Songlai Chin"}, ["csk"] = {"Jola-Kasa"}, ["csl"] = {"Chinese Sign Language"}, ["csm"] = {"Central Sierra Miwok"}, ["csn"] = {"Colombian Sign Language"}, ["cso"] = {"Sochiapam Chinantec", "Sochiapan Chinantec"}, ["csp"] = {"Southern Ping Chinese", "Southern Pinghua"}, ["csq"] = {"Croatia Sign Language"}, ["csr"] = {"Costa Rican Sign Language"}, ["css"] = {"Southern Ohlone"}, ["cst"] = {"Northern Ohlone"}, ["csu"] = {"Central Sudanic languages"}, ["csv"] = {"Sumtu Chin"}, ["csw"] = {"Swampy Cree"}, ["csx"] = {"Cambodian Sign Language"}, ["csy"] = {"Siyin Chin"}, ["csz"] = {"Coos"}, ["cta"] = {"Tataltepec Chatino"}, ["ctc"] = {"Chetco"}, ["ctd"] = {"Tedim Chin"}, ["cte"] = {"Tepinapa Chinantec"}, ["ctg"] = {"Chittagonian"}, ["cth"] = {"Thaiphum Chin"}, ["ctl"] = {"Tlacoatzintepec Chinantec"}, ["ctm"] = {"Chitimacha"}, ["ctn"] = {"Chhintange"}, ["cto"] = {"Emberá-Catío"}, ["ctp"] = {"Western Highland Chatino"}, ["cts"] = {"Northern Catanduanes Bikol"}, ["ctt"] = {"Wayanad Chetti"}, ["ctu"] = {"Chol"}, ["cty"] = {"Moundadan Chetty"}, ["ctz"] = {"Zacatepec Chatino"}, ["cua"] = {"Cua"}, ["cub"] = {"Cubeo"}, ["cuc"] = {"Usila Chinantec"}, ["cuh"] = {"Chuka", "Gichuka"}, ["cui"] = {"Cuiba"}, ["cuj"] = {"Mashco Piro"}, ["cuk"] = {"San Blas Kuna"}, ["cul"] = {"Culina", "Kulina"}, ["cuo"] = {"Cumanagoto"}, ["cup"] = {"Cupeño"}, ["cuq"] = {"Cun"}, ["cur"] = {"Chhulung"}, ["cus"] = {"Cushitic languages"}, ["cut"] = {"Teutila Cuicatec"}, ["cuu"] = {"Tai Ya"}, ["cuv"] = {"Cuvok"}, ["cuw"] = {"Chukwa"}, ["cux"] = {"Tepeuxila Cuicatec"}, ["cuy"] = {"Cuitlatec"}, ["cvg"] = {"Chug"}, ["cvn"] = {"Valle Nacional Chinantec"}, ["cwa"] = {"Kabwa"}, ["cwb"] = {"Maindo"}, ["cwd"] = {"Woods Cree"}, ["cwe"] = {"Kwere"}, ["cwg"] = {"Chewong", "Cheq Wong"}, ["cwt"] = {"Kuwaataay"}, ["cya"] = {"Nopala Chatino"}, ["cyb"] = {"Cayubaba"}, ["cyo"] = {"Cuyonon"}, ["czh"] = {"Huizhou Chinese"}, ["czk"] = {"Knaanic"}, ["czn"] = {"Zenzontepec Chatino"}, ["czo"] = {"Min Zhong Chinese"}, ["czt"] = {"Zotung Chin"}, ["daa"] = {"Dangaléat"}, ["dac"] = {"Dambi"}, ["dad"] = {"Marik"}, ["dae"] = {"Duupa"}, ["dag"] = {"Dagbani"}, ["dah"] = {"Gwahatike"}, ["dai"] = {"Day"}, ["daj"] = {"Dar Fur Daju"}, ["dak"] = {"Dakota"}, ["dal"] = {"Dahalo"}, ["dam"] = {"Damakawa"}, ["dao"] = {"Daai Chin"}, ["daq"] = {"Dandami Maria"}, ["dar"] = {"Dargwa"}, ["das"] = {"Daho-Doo"}, ["dau"] = {"Dar Sila Daju"}, ["dav"] = {"Taita", "Dawida"}, ["daw"] = {"Davawenyo"}, ["dax"] = {"Dayi"}, ["day"] = {"Land Dayak languages"}, ["daz"] = {"Dao"}, ["dba"] = {"Bangime"}, ["dbb"] = {"Deno"}, ["dbd"] = {"Dadiya"}, ["dbe"] = {"Dabe"}, ["dbf"] = {"Edopi"}, ["dbg"] = {"Dogul Dom Dogon"}, ["dbi"] = {"Doka"}, ["dbj"] = {"Ida'an"}, ["dbl"] = {"Dyirbal"}, ["dbm"] = {"Duguri"}, ["dbn"] = {"Duriankere"}, ["dbo"] = {"Dulbu"}, ["dbp"] = {"Duwai"}, ["dbq"] = {"Daba"}, ["dbr"] = {"Dabarre"}, ["dbt"] = {"Ben Tey Dogon"}, ["dbu"] = {"Bondum Dom Dogon"}, ["dbv"] = {"Dungu"}, ["dbw"] = {"Bankan Tey Dogon"}, ["dby"] = {"Dibiyaso"}, ["dcc"] = {"Deccan"}, ["dcr"] = {"Negerhollands"}, ["dda"] = {"Dadi Dadi"}, ["ddd"] = {"Dongotono"}, ["dde"] = {"Doondo"}, ["ddg"] = {"Fataluku"}, ["ddi"] = {"West Goodenough"}, ["ddj"] = {"Jaru"}, ["ddn"] = {"Dendi (Benin)"}, ["ddo"] = {"Dido"}, ["ddr"] = {"Dhudhuroa"}, ["dds"] = {"Donno So Dogon"}, ["ddw"] = {"Dawera-Daweloor"}, ["dec"] = {"Dagik"}, ["ded"] = {"Dedua"}, ["dee"] = {"Dewoin"}, ["def"] = {"Dezfuli"}, ["deg"] = {"Degema"}, ["deh"] = {"Dehwari"}, ["dei"] = {"Demisa"}, ["dek"] = {"Dek"}, ["del"] = {"Delaware"}, ["dem"] = {"Dem"}, ["den"] = {"Slave (Athapascan)"}, ["dep"] = {"Pidgin Delaware"}, ["deq"] = {"Dendi (Central African Republic)"}, ["der"] = {"Deori"}, ["des"] = {"Desano"}, ["dev"] = {"Domung"}, ["dez"] = {"Dengese"}, ["dga"] = {"Southern Dagaare"}, ["dgb"] = {"Bunoge Dogon"}, ["dgc"] = {"Casiguran Dumagat Agta"}, ["dgd"] = {"Dagaari Dioula"}, ["dge"] = {"Degenan"}, ["dgg"] = {"Doga"}, ["dgh"] = {"Dghwede"}, ["dgi"] = {"Northern Dagara"}, ["dgk"] = {"Dagba"}, ["dgl"] = {"Andaandi", "Dongolawi"}, ["dgn"] = {"Dagoman"}, ["dgo"] = {"Dogri (individual language)"}, ["dgr"] = {"Dogrib", "Tłı̨chǫ"}, ["dgs"] = {"Dogoso"}, ["dgt"] = {"Ndra'ngith"}, ["dgw"] = {"Daungwurrung"}, ["dgx"] = {"Doghoro"}, ["dgz"] = {"Daga"}, ["dhd"] = {"Dhundari"}, ["dhg"] = {"Dhangu-Djangu", "Dhangu", "Djangu"}, ["dhi"] = {"Dhimal"}, ["dhl"] = {"Dhalandji"}, ["dhm"] = {"Zemba"}, ["dhn"] = {"Dhanki"}, ["dho"] = {"Dhodia"}, ["dhr"] = {"Dhargari"}, ["dhs"] = {"Dhaiso"}, ["dhu"] = {"Dhurga"}, ["dhv"] = {"Dehu", "Drehu"}, ["dhw"] = {"Dhanwar (Nepal)"}, ["dhx"] = {"Dhungaloo"}, ["dia"] = {"Dia"}, ["dib"] = {"South Central Dinka"}, ["dic"] = {"Lakota Dida"}, ["did"] = {"Didinga"}, ["dif"] = {"Dieri", "Diyari"}, ["dig"] = {"Digo", "Chidigo"}, ["dih"] = {"Kumiai"}, ["dii"] = {"Dimbong"}, ["dij"] = {"Dai"}, ["dik"] = {"Southwestern Dinka"}, ["dil"] = {"Dilling"}, ["dim"] = {"Dime"}, ["din"] = {"Dinka"}, ["dio"] = {"Dibo"}, ["dip"] = {"Northeastern Dinka"}, ["diq"] = {"Dimli (individual language)"}, ["dir"] = {"Dirim"}, ["dis"] = {"Dimasa"}, ["diu"] = {"Diriku"}, ["diw"] = {"Northwestern Dinka"}, ["dix"] = {"Dixon Reef"}, ["diy"] = {"Diuwe"}, ["diz"] = {"Ding"}, ["dja"] = {"Djadjawurrung"}, ["djb"] = {"Djinba"}, ["djc"] = {"Dar Daju Daju"}, ["djd"] = {"Djamindjung", "Ngaliwurru"}, ["dje"] = {"Zarma"}, ["djf"] = {"Djangun"}, ["dji"] = {"Djinang"}, ["djj"] = {"Djeebbana"}, ["djk"] = {"Eastern Maroon Creole", "Businenge Tongo", "Nenge"}, ["djm"] = {"Jamsay Dogon"}, ["djn"] = {"Jawoyn", "Djauan"}, ["djo"] = {"Jangkang"}, ["djr"] = {"Djambarrpuyngu"}, ["dju"] = {"Kapriman"}, ["djw"] = {"Djawi"}, ["dka"] = {"Dakpakha"}, ["dkg"] = {"Kadung"}, ["dkk"] = {"Dakka"}, ["dkr"] = {"Kuijau"}, ["dks"] = {"Southeastern Dinka"}, ["dkx"] = {"Mazagway"}, ["dlg"] = {"Dolgan"}, ["dlk"] = {"Dahalik"}, ["dlm"] = {"Dalmatian"}, ["dln"] = {"Darlong"}, ["dma"] = {"Duma"}, ["dmb"] = {"Mombo Dogon"}, ["dmc"] = {"Gavak"}, ["dmd"] = {"Madhi Madhi"}, ["dme"] = {"Dugwor"}, ["dmf"] = {"Medefaidrin"}, ["dmg"] = {"Upper Kinabatangan"}, ["dmk"] = {"Domaaki"}, ["dml"] = {"Dameli"}, ["dmm"] = {"Dama"}, ["dmn"] = {"Mande languages"}, ["dmo"] = {"Kemedzung"}, ["dmr"] = {"East Damar"}, ["dms"] = {"Dampelas"}, ["dmu"] = {"Dubu", "Tebi"}, ["dmv"] = {"Dumpas"}, ["dmw"] = {"Mudburra"}, ["dmx"] = {"Dema"}, ["dmy"] = {"Demta", "Sowari"}, ["dna"] = {"Upper Grand Valley Dani"}, ["dnd"] = {"Daonda"}, ["dne"] = {"Ndendeule"}, ["dng"] = {"Dungan"}, ["dni"] = {"Lower Grand Valley Dani"}, ["dnj"] = {"Dan"}, ["dnk"] = {"Dengka"}, ["dnn"] = {"Dzùùngoo"}, ["dno"] = {"Ndrulo", "Northern Lendu"}, ["dnr"] = {"Danaru"}, ["dnt"] = {"Mid Grand Valley Dani"}, ["dnu"] = {"Danau"}, ["dnv"] = {"Danu"}, ["dnw"] = {"Western Dani"}, ["dny"] = {"Dení"}, ["doa"] = {"Dom"}, ["dob"] = {"Dobu"}, ["doc"] = {"Northern Dong"}, ["doe"] = {"Doe"}, ["dof"] = {"Domu"}, ["doh"] = {"Dong"}, ["doi"] = {"Dogri (macrolanguage)"}, ["dok"] = {"Dondo"}, ["dol"] = {"Doso"}, ["don"] = {"Toura (Papua New Guinea)"}, ["doo"] = {"Dongo"}, ["dop"] = {"Lukpa"}, ["doq"] = {"Dominican Sign Language"}, ["dor"] = {"Dori'o"}, ["dos"] = {"Dogosé"}, ["dot"] = {"Dass"}, ["dov"] = {"Dombe"}, ["dow"] = {"Doyayo"}, ["dox"] = {"Bussa"}, ["doy"] = {"Dompo"}, ["doz"] = {"Dorze"}, ["dpp"] = {"Papar"}, ["dra"] = {"Dravidian languages"}, ["drb"] = {"Dair"}, ["drc"] = {"Minderico"}, ["drd"] = {"Darmiya"}, ["dre"] = {"Dolpo"}, ["drg"] = {"Rungus"}, ["dri"] = {"C'Lela"}, ["drl"] = {"Paakantyi"}, ["drn"] = {"West Damar"}, ["dro"] = {"Daro-Matu Melanau"}, ["drq"] = {"Dura"}, ["drs"] = {"Gedeo"}, ["drt"] = {"Drents"}, ["dru"] = {"Rukai"}, ["dry"] = {"Darai"}, ["dsb"] = {"Lower Sorbian"}, ["dse"] = {"Dutch Sign Language"}, ["dsh"] = {"Daasanach"}, ["dsi"] = {"Disa"}, ["dsl"] = {"Danish Sign Language"}, ["dsn"] = {"Dusner"}, ["dso"] = {"Desiya"}, ["dsq"] = {"Tadaksahak"}, ["dsz"] = {"Mardin Sign Language"}, ["dta"] = {"Daur"}, ["dtb"] = {"Labuk-Kinabatangan Kadazan"}, ["dtd"] = {"Ditidaht"}, ["dth"] = {"Adithinngithigh"}, ["dti"] = {"Ana Tinga Dogon"}, ["dtk"] = {"Tene Kan Dogon"}, ["dtm"] = {"Tomo Kan Dogon"}, ["dtn"] = {"Daatsʼíin"}, ["dto"] = {"Tommo So Dogon"}, ["dtp"] = {"Kadazan Dusun", "Central Dusun"}, ["dtr"] = {"Lotud"}, ["dts"] = {"Toro So Dogon"}, ["dtt"] = {"Toro Tegu Dogon"}, ["dtu"] = {"Tebul Ure Dogon"}, ["dty"] = {"Dotyali"}, ["dua"] = {"Duala"}, ["dub"] = {"Dubli"}, ["duc"] = {"Duna"}, ["due"] = {"Umiray Dumaget Agta"}, ["duf"] = {"Dumbea", "Drubea"}, ["dug"] = {"Duruma", "Chiduruma"}, ["duh"] = {"Dungra Bhil"}, ["dui"] = {"Dumun"}, ["duk"] = {"Uyajitaya"}, ["dul"] = {"Alabat Island Agta"}, ["dum"] = {"Middle Dutch (ca. 1050-1350)"}, ["dun"] = {"Dusun Deyah"}, ["duo"] = {"Dupaninan Agta"}, ["dup"] = {"Duano"}, ["duq"] = {"Dusun Malang"}, ["dur"] = {"Dii"}, ["dus"] = {"Dumi"}, ["duu"] = {"Drung"}, ["duv"] = {"Duvle"}, ["duw"] = {"Dusun Witu"}, ["dux"] = {"Duungooma"}, ["duy"] = {"Dicamay Agta"}, ["duz"] = {"Duli-Gey"}, ["dva"] = {"Duau"}, ["dwa"] = {"Diri"}, ["dwk"] = {"Dawik Kui"}, ["dwr"] = {"Dawro"}, ["dws"] = {"Dutton World Speedwords"}, ["dwu"] = {"Dhuwal"}, ["dww"] = {"Dawawa"}, ["dwy"] = {"Dhuwaya"}, ["dwz"] = {"Dewas Rai"}, ["dya"] = {"Dyan"}, ["dyb"] = {"Dyaberdyaber"}, ["dyd"] = {"Dyugun"}, ["dyg"] = {"Villa Viciosa Agta"}, ["dyi"] = {"Djimini Senoufo"}, ["dym"] = {"Yanda Dom Dogon"}, ["dyn"] = {"Dyangadi", "Dhanggatti"}, ["dyo"] = {"Jola-Fonyi"}, ["dyu"] = {"Dyula"}, ["dyy"] = {"Djabugay", "Dyaabugay"}, ["dza"] = {"Tunzu"}, ["dze"] = {"Djiwarli"}, ["dzg"] = {"Dazaga"}, ["dzl"] = {"Dzalakha"}, ["dzn"] = {"Dzando"}, ["eaa"] = {"Karenggapa"}, ["ebc"] = {"Beginci"}, ["ebg"] = {"Ebughu"}, ["ebk"] = {"Eastern Bontok"}, ["ebo"] = {"Teke-Ebo"}, ["ebr"] = {"Ebrié"}, ["ebu"] = {"Embu", "Kiembu"}, ["ecr"] = {"Eteocretan"}, ["ecs"] = {"Ecuadorian Sign Language"}, ["ecy"] = {"Eteocypriot"}, ["eee"] = {"E"}, ["efa"] = {"Efai"}, ["efe"] = {"Efe"}, ["efi"] = {"Efik"}, ["ega"] = {"Ega"}, ["egl"] = {"Emilian"}, ["egm"] = {"Benamanga"}, ["ego"] = {"Eggon"}, ["egx"] = {"Egyptian languages"}, ["egy"] = {"Egyptian (Ancient)"}, ["ehs"] = {"Miyakubo Sign Language"}, ["ehu"] = {"Ehueun"}, ["eip"] = {"Eipomek"}, ["eit"] = {"Eitiep"}, ["eiv"] = {"Askopan"}, ["eja"] = {"Ejamat"}, ["eka"] = {"Ekajuk"}, ["eke"] = {"Ekit"}, ["ekg"] = {"Ekari"}, ["eki"] = {"Eki"}, ["ekk"] = {"Standard Estonian"}, ["ekl"] = {"Kol (Bangladesh)", "Kol"}, ["ekm"] = {"Elip"}, ["eko"] = {"Koti"}, ["ekp"] = {"Ekpeye"}, ["ekr"] = {"Yace"}, ["eky"] = {"Eastern Kayah"}, ["ele"] = {"Elepi"}, ["elh"] = {"El Hugeirat"}, ["eli"] = {"Nding"}, ["elk"] = {"Elkei"}, ["elm"] = {"Eleme"}, ["elo"] = {"El Molo"}, ["elu"] = {"Elu"}, ["elx"] = {"Elamite"}, ["ema"] = {"Emai-Iuleha-Ora"}, ["emb"] = {"Embaloh"}, ["eme"] = {"Emerillon"}, ["emg"] = {"Eastern Meohang"}, ["emi"] = {"Mussau-Emira"}, ["emk"] = {"Eastern Maninkakan"}, ["emm"] = {"Mamulique"}, ["emn"] = {"Eman"}, ["emp"] = {"Northern Emberá"}, ["emq"] = {"Eastern Minyag"}, ["ems"] = {"Pacific Gulf Yupik"}, ["emu"] = {"Eastern Muria"}, ["emw"] = {"Emplawas"}, ["emx"] = {"Erromintxela"}, ["emy"] = {"Epigraphic Mayan"}, ["emz"] = {"Mbessa"}, ["ena"] = {"Apali"}, ["enb"] = {"Markweeta"}, ["enc"] = {"En"}, ["end"] = {"Ende"}, ["enf"] = {"Forest Enets"}, ["enh"] = {"Tundra Enets"}, ["enl"] = {"Enlhet"}, ["enm"] = {"Middle English (1100-1500)"}, ["enn"] = {"Engenni"}, ["eno"] = {"Enggano"}, ["enq"] = {"Enga"}, ["enr"] = {"Emumu", "Emem"}, ["enu"] = {"Enu"}, ["env"] = {"Enwan (Edo State)"}, ["enw"] = {"Enwan (Akwa Ibom State)"}, ["enx"] = {"Enxet"}, ["eot"] = {"Beti (Côte d'Ivoire)"}, ["epi"] = {"Epie"}, ["era"] = {"Eravallan"}, ["erg"] = {"Sie"}, ["erh"] = {"Eruwa"}, ["eri"] = {"Ogea"}, ["erk"] = {"South Efate"}, ["ero"] = {"Horpa"}, ["err"] = {"Erre"}, ["ers"] = {"Ersu"}, ["ert"] = {"Eritai"}, ["erw"] = {"Erokwanas"}, ["ese"] = {"Ese Ejja"}, ["esg"] = {"Aheri Gondi"}, ["esh"] = {"Eshtehardi"}, ["esi"] = {"North Alaskan Inupiatun"}, ["esk"] = {"Northwest Alaska Inupiatun"}, ["esl"] = {"Egypt Sign Language"}, ["esm"] = {"Esuma"}, ["esn"] = {"Salvadoran Sign Language"}, ["eso"] = {"Estonian Sign Language"}, ["esq"] = {"Esselen"}, ["ess"] = {"Central Siberian Yupik"}, ["esu"] = {"Central Yupik"}, ["esx"] = {"Eskimo-Aleut languages"}, ["esy"] = {"Eskayan"}, ["etb"] = {"Etebi"}, ["etc"] = {"Etchemin"}, ["eth"] = {"Ethiopian Sign Language"}, ["etn"] = {"Eton (Vanuatu)"}, ["eto"] = {"Eton (Cameroon)"}, ["etr"] = {"Edolo"}, ["ets"] = {"Yekhee"}, ["ett"] = {"Etruscan"}, ["etu"] = {"Ejagham"}, ["etx"] = {"Eten"}, ["etz"] = {"Semimi"}, ["euq"] = {"Basque (family)"}, ["eve"] = {"Even"}, ["evh"] = {"Uvbie"}, ["evn"] = {"Evenki"}, ["ewo"] = {"Ewondo"}, ["ext"] = {"Extremaduran"}, ["eya"] = {"Eyak"}, ["eyo"] = {"Keiyo"}, ["eza"] = {"Ezaa"}, ["eze"] = {"Uzekwe"}, ["faa"] = {"Fasu"}, ["fab"] = {"Fa d'Ambu"}, ["fad"] = {"Wagi"}, ["faf"] = {"Fagani"}, ["fag"] = {"Finongan"}, ["fah"] = {"Baissa Fali"}, ["fai"] = {"Faiwol"}, ["faj"] = {"Faita"}, ["fak"] = {"Fang (Cameroon)"}, ["fal"] = {"South Fali"}, ["fam"] = {"Fam"}, ["fan"] = {"Fang (Equatorial Guinea)"}, ["fap"] = {"Paloor"}, ["far"] = {"Fataleka"}, ["fat"] = {"Fanti"}, ["fau"] = {"Fayu"}, ["fax"] = {"Fala"}, ["fay"] = {"Southwestern Fars"}, ["faz"] = {"Northwestern Fars"}, ["fbl"] = {"West Albay Bikol"}, ["fcs"] = {"Quebec Sign Language"}, ["fer"] = {"Feroge"}, ["ffi"] = {"Foia Foia"}, ["ffm"] = {"Maasina Fulfulde"}, ["fgr"] = {"Fongoro"}, ["fia"] = {"Nobiin"}, ["fie"] = {"Fyer"}, ["fif"] = {"Faifi"}, ["fil"] = {"Filipino", "Pilipino"}, ["fip"] = {"Fipa"}, ["fir"] = {"Firan"}, ["fit"] = {"Tornedalen Finnish", "Meänkieli"}, ["fiu"] = {"Finno-Ugrian languages"}, ["fiw"] = {"Fiwaga"}, ["fkk"] = {"Kirya-Konzəl"}, ["fkv"] = {"Kven Finnish"}, ["fla"] = {"Kalispel-Pend d'Oreille"}, ["flh"] = {"Foau"}, ["fli"] = {"Fali"}, ["fll"] = {"North Fali"}, ["fln"] = {"Flinders Island"}, ["flr"] = {"Fuliiru"}, ["fly"] = {"Flaaitaal", "Tsotsitaal"}, ["fmp"] = {"Fe'fe'"}, ["fmu"] = {"Far Western Muria"}, ["fnb"] = {"Fanbak"}, ["fng"] = {"Fanagalo"}, ["fni"] = {"Fania"}, ["fod"] = {"Foodo"}, ["foi"] = {"Foi"}, ["fom"] = {"Foma"}, ["fon"] = {"Fon"}, ["for"] = {"Fore"}, ["fos"] = {"Siraya"}, ["fox"] = {"Formosan languages"}, ["fpe"] = {"Fernando Po Creole English"}, ["fqs"] = {"Fas"}, ["frc"] = {"Cajun French"}, ["frd"] = {"Fordata"}, ["frk"] = {"Frankish"}, ["frm"] = {"Middle French (ca. 1400-1600)"}, ["fro"] = {"Old French (842-ca. 1400)"}, ["frp"] = {"Arpitan", "Francoprovençal"}, ["frq"] = {"Forak"}, ["frr"] = {"Northern Frisian"}, ["frs"] = {"Eastern Frisian"}, ["frt"] = {"Fortsenal"}, ["fse"] = {"Finnish Sign Language"}, ["fsl"] = {"French Sign Language"}, ["fss"] = {"Finland-Swedish Sign Language", "finlandssvenskt teckenspråk", "suomenruotsalainen viittomakieli"}, ["fub"] = {"Adamawa Fulfulde"}, ["fuc"] = {"Pulaar"}, ["fud"] = {"East Futuna"}, ["fue"] = {"Borgu Fulfulde"}, ["fuf"] = {"Pular"}, ["fuh"] = {"Western Niger Fulfulde"}, ["fui"] = {"Bagirmi Fulfulde"}, ["fuj"] = {"Ko"}, ["fum"] = {"Fum"}, ["fun"] = {"Fulniô"}, ["fuq"] = {"Central-Eastern Niger Fulfulde"}, ["fur"] = {"Friulian"}, ["fut"] = {"Futuna-Aniwa"}, ["fuu"] = {"Furu"}, ["fuv"] = {"Nigerian Fulfulde"}, ["fuy"] = {"Fuyug"}, ["fvr"] = {"Fur"}, ["fwa"] = {"Fwâi"}, ["fwe"] = {"Fwe"}, ["gaa"] = {"Ga"}, ["gab"] = {"Gabri"}, ["gac"] = {"Mixed Great Andamanese"}, ["gad"] = {"Gaddang"}, ["gae"] = {"Guarequena"}, ["gaf"] = {"Gende"}, ["gag"] = {"Gagauz"}, ["gah"] = {"Alekano"}, ["gai"] = {"Borei"}, ["gaj"] = {"Gadsup"}, ["gak"] = {"Gamkonora"}, ["gal"] = {"Galolen"}, ["gam"] = {"Kandawo"}, ["gan"] = {"Gan Chinese"}, ["gao"] = {"Gants"}, ["gap"] = {"Gal"}, ["gaq"] = {"Gata'"}, ["gar"] = {"Galeya"}, ["gas"] = {"Adiwasi Garasia"}, ["gat"] = {"Kenati"}, ["gau"] = {"Mudhili Gadaba"}, ["gaw"] = {"Nobonob"}, ["gax"] = {"Borana-Arsi-Guji Oromo"}, ["gay"] = {"Gayo"}, ["gaz"] = {"West Central Oromo"}, ["gba"] = {"Gbaya (Central African Republic)"}, ["gbb"] = {"Kaytetye"}, ["gbd"] = {"Karajarri"}, ["gbe"] = {"Niksek"}, ["gbf"] = {"Gaikundi"}, ["gbg"] = {"Gbanziri"}, ["gbh"] = {"Defi Gbe"}, ["gbi"] = {"Galela"}, ["gbj"] = {"Bodo Gadaba"}, ["gbk"] = {"Gaddi"}, ["gbl"] = {"Gamit"}, ["gbm"] = {"Garhwali"}, ["gbn"] = {"Mo'da"}, ["gbo"] = {"Northern Grebo"}, ["gbp"] = {"Gbaya-Bossangoa"}, ["gbq"] = {"Gbaya-Bozoum"}, ["gbr"] = {"Gbagyi"}, ["gbs"] = {"Gbesi Gbe"}, ["gbu"] = {"Gagadu"}, ["gbv"] = {"Gbanu"}, ["gbw"] = {"Gabi-Gabi"}, ["gbx"] = {"Eastern Xwla Gbe"}, ["gby"] = {"Gbari"}, ["gbz"] = {"Zoroastrian Dari"}, ["gcc"] = {"Mali"}, ["gcd"] = {"Ganggalida"}, ["gce"] = {"Galice"}, ["gcf"] = {"Guadeloupean Creole French"}, ["gcl"] = {"Grenadian Creole English"}, ["gcn"] = {"Gaina"}, ["gcr"] = {"Guianese Creole French"}, ["gct"] = {"Colonia Tovar German"}, ["gda"] = {"Gade Lohar"}, ["gdb"] = {"Pottangi Ollar Gadaba"}, ["gdc"] = {"Gugu Badhun"}, ["gdd"] = {"Gedaged"}, ["gde"] = {"Gude"}, ["gdf"] = {"Guduf-Gava"}, ["gdg"] = {"Ga'dang"}, ["gdh"] = {"Gadjerawang", "Gajirrabeng"}, ["gdi"] = {"Gundi"}, ["gdj"] = {"Gurdjar"}, ["gdk"] = {"Gadang"}, ["gdl"] = {"Dirasha"}, ["gdm"] = {"Laal"}, ["gdn"] = {"Umanakaina"}, ["gdo"] = {"Ghodoberi"}, ["gdq"] = {"Mehri"}, ["gdr"] = {"Wipi"}, ["gds"] = {"Ghandruk Sign Language"}, ["gdt"] = {"Kungardutyi"}, ["gdu"] = {"Gudu"}, ["gdx"] = {"Godwari"}, ["gea"] = {"Geruma"}, ["geb"] = {"Kire"}, ["gec"] = {"Gboloo Grebo"}, ["ged"] = {"Gade"}, ["gef"] = {"Gerai"}, ["geg"] = {"Gengle"}, ["geh"] = {"Hutterite German", "Hutterisch"}, ["gei"] = {"Gebe"}, ["gej"] = {"Gen"}, ["gek"] = {"Ywom"}, ["gel"] = {"ut-Ma'in"}, ["gem"] = {"Germanic languages"}, ["geq"] = {"Geme"}, ["ges"] = {"Geser-Gorom"}, ["gev"] = {"Eviya"}, ["gew"] = {"Gera"}, ["gex"] = {"Garre"}, ["gey"] = {"Enya"}, ["gez"] = {"Geez"}, ["gfk"] = {"Patpatar"}, ["gft"] = {"Gafat"}, ["gga"] = {"Gao"}, ["ggb"] = {"Gbii"}, ["ggd"] = {"Gugadj"}, ["gge"] = {"Gurr-goni"}, ["ggg"] = {"Gurgula"}, ["ggk"] = {"Kungarakany"}, ["ggl"] = {"Ganglau"}, ["ggt"] = {"Gitua"}, ["ggu"] = {"Gagu", "Gban"}, ["ggw"] = {"Gogodala"}, ["gha"] = {"Ghadamès"}, ["ghc"] = {"Hiberno-Scottish Gaelic"}, ["ghe"] = {"Southern Ghale"}, ["ghh"] = {"Northern Ghale"}, ["ghk"] = {"Geko Karen"}, ["ghl"] = {"Ghulfan"}, ["ghn"] = {"Ghanongga"}, ["gho"] = {"Ghomara"}, ["ghr"] = {"Ghera"}, ["ghs"] = {"Guhu-Samane"}, ["ght"] = {"Kuke", "Kutang Ghale"}, ["gia"] = {"Kija"}, ["gib"] = {"Gibanawa"}, ["gic"] = {"Gail"}, ["gid"] = {"Gidar"}, ["gie"] = {"Gaɓogbo", "Guébie"}, ["gig"] = {"Goaria"}, ["gih"] = {"Githabul"}, ["gii"] = {"Girirra"}, ["gil"] = {"Gilbertese"}, ["gim"] = {"Gimi (Eastern Highlands)"}, ["gin"] = {"Hinukh"}, ["gip"] = {"Gimi (West New Britain)"}, ["giq"] = {"Green Gelao"}, ["gir"] = {"Red Gelao"}, ["gis"] = {"North Giziga"}, ["git"] = {"Gitxsan"}, ["giu"] = {"Mulao"}, ["giw"] = {"White Gelao"}, ["gix"] = {"Gilima"}, ["giy"] = {"Giyug"}, ["giz"] = {"South Giziga"}, ["gjk"] = {"Kachi Koli"}, ["gjm"] = {"Gunditjmara"}, ["gjn"] = {"Gonja"}, ["gjr"] = {"Gurindji Kriol"}, ["gju"] = {"Gujari"}, ["gka"] = {"Guya"}, ["gkd"] = {"Magɨ (Madang Province)"}, ["gke"] = {"Ndai"}, ["gkn"] = {"Gokana"}, ["gko"] = {"Kok-Nar"}, ["gkp"] = {"Guinea Kpelle"}, ["gku"] = {"ǂUngkue"}, ["glb"] = {"Belning"}, ["glc"] = {"Bon Gula"}, ["gld"] = {"Nanai"}, ["glh"] = {"Northwest Pashai", "Northwest Pashayi"}, ["glj"] = {"Gula Iro"}, ["glk"] = {"Gilaki"}, ["gll"] = {"Garlali"}, ["glo"] = {"Galambu"}, ["glr"] = {"Glaro-Twabo"}, ["glu"] = {"Gula (Chad)"}, ["glw"] = {"Glavda"}, ["gly"] = {"Gule"}, ["gma"] = {"Gambera"}, ["gmb"] = {"Gula'alaa"}, ["gmd"] = {"Mághdì"}, ["gme"] = {"East Germanic languages"}, ["gmg"] = {"Magɨyi"}, ["gmh"] = {"Middle High German (ca. 1050-1500)"}, ["gml"] = {"Middle Low German"}, ["gmm"] = {"Gbaya-Mbodomo"}, ["gmn"] = {"Gimnime"}, ["gmq"] = {"North Germanic languages"}, ["gmr"] = {"Mirning", "Mirniny"}, ["gmu"] = {"Gumalu"}, ["gmv"] = {"Gamo"}, ["gmw"] = {"West Germanic languages"}, ["gmx"] = {"Magoma"}, ["gmy"] = {"Mycenaean Greek"}, ["gmz"] = {"Mgbolizhia"}, ["gna"] = {"Kaansa"}, ["gnb"] = {"Gangte"}, ["gnc"] = {"Guanche"}, ["gnd"] = {"Zulgo-Gemzek"}, ["gne"] = {"Ganang"}, ["gng"] = {"Ngangam"}, ["gnh"] = {"Lere"}, ["gni"] = {"Gooniyandi"}, ["gnj"] = {"Ngen"}, ["gnk"] = {"ǁGana"}, ["gnl"] = {"Gangulu"}, ["gnm"] = {"Ginuman"}, ["gnn"] = {"Gumatj"}, ["gno"] = {"Northern Gondi"}, ["gnq"] = {"Gana"}, ["gnr"] = {"Gureng Gureng"}, ["gnt"] = {"Guntai"}, ["gnu"] = {"Gnau"}, ["gnw"] = {"Western Bolivian Guaraní"}, ["gnz"] = {"Ganzi"}, ["goa"] = {"Guro"}, ["gob"] = {"Playero"}, ["goc"] = {"Gorakor"}, ["god"] = {"Godié"}, ["goe"] = {"Gongduk"}, ["gof"] = {"Gofa"}, ["gog"] = {"Gogo"}, ["goh"] = {"Old High German (ca. 750-1050)"}, ["goi"] = {"Gobasi"}, ["goj"] = {"Gowlan"}, ["gok"] = {"Gowli"}, ["gol"] = {"Gola"}, ["gom"] = {"Goan Konkani"}, ["gon"] = {"Gondi"}, ["goo"] = {"Gone Dau"}, ["gop"] = {"Yeretuar"}, ["goq"] = {"Gorap"}, ["gor"] = {"Gorontalo"}, ["gos"] = {"Gronings"}, ["got"] = {"Gothic"}, ["gou"] = {"Gavar"}, ["gov"] = {"Goo"}, ["gow"] = {"Gorowa"}, ["gox"] = {"Gobu"}, ["goy"] = {"Goundo"}, ["goz"] = {"Gozarkhani"}, ["gpa"] = {"Gupa-Abawa"}, ["gpe"] = {"Ghanaian Pidgin English"}, ["gpn"] = {"Taiap"}, ["gqa"] = {"Ga'anda"}, ["gqi"] = {"Guiqiong"}, ["gqn"] = {"Guana (Brazil)"}, ["gqr"] = {"Gor"}, ["gqu"] = {"Qau"}, ["gra"] = {"Rajput Garasia"}, ["grb"] = {"Grebo"}, ["grc"] = {"Ancient Greek (to 1453)"}, ["grd"] = {"Guruntum-Mbaaru"}, ["grg"] = {"Madi"}, ["grh"] = {"Gbiri-Niragu"}, ["gri"] = {"Ghari"}, ["grj"] = {"Southern Grebo"}, ["grk"] = {"Greek languages"}, ["grm"] = {"Kota Marudu Talantang"}, ["gro"] = {"Groma"}, ["grq"] = {"Gorovu"}, ["grr"] = {"Taznatit"}, ["grs"] = {"Gresi"}, ["grt"] = {"Garo"}, ["gru"] = {"Kistane"}, ["grv"] = {"Central Grebo"}, ["grw"] = {"Gweda"}, ["grx"] = {"Guriaso"}, ["gry"] = {"Barclayville Grebo"}, ["grz"] = {"Guramalum"}, ["gse"] = {"Ghanaian Sign Language"}, ["gsg"] = {"German Sign Language"}, ["gsl"] = {"Gusilay"}, ["gsm"] = {"Guatemalan Sign Language"}, ["gsn"] = {"Nema", "Gusan"}, ["gso"] = {"Southwest Gbaya"}, ["gsp"] = {"Wasembo"}, ["gss"] = {"Greek Sign Language"}, ["gsw"] = {"Swiss German", "Alemannic", "Alsatian"}, ["gta"] = {"Guató"}, ["gtu"] = {"Aghu-Tharnggala"}, ["gua"] = {"Shiki"}, ["gub"] = {"Guajajára"}, ["guc"] = {"Wayuu"}, ["gud"] = {"Yocoboué Dida"}, ["gue"] = {"Gurindji"}, ["guf"] = {"Gupapuyngu"}, ["gug"] = {"Paraguayan Guaraní"}, ["guh"] = {"Guahibo"}, ["gui"] = {"Eastern Bolivian Guaraní"}, ["guk"] = {"Gumuz"}, ["gul"] = {"Sea Island Creole English"}, ["gum"] = {"Guambiano"}, ["gun"] = {"Mbyá Guaraní"}, ["guo"] = {"Guayabero"}, ["gup"] = {"Gunwinggu"}, ["guq"] = {"Aché"}, ["gur"] = {"Farefare"}, ["gus"] = {"Guinean Sign Language"}, ["gut"] = {"Maléku Jaíka"}, ["guu"] = {"Yanomamö"}, ["guw"] = {"Gun"}, ["gux"] = {"Gourmanchéma"}, ["guz"] = {"Gusii", "Ekegusii"}, ["gva"] = {"Guana (Paraguay)"}, ["gvc"] = {"Guanano"}, ["gve"] = {"Duwet"}, ["gvf"] = {"Golin"}, ["gvj"] = {"Guajá"}, ["gvl"] = {"Gulay"}, ["gvm"] = {"Gurmana"}, ["gvn"] = {"Kuku-Yalanji"}, ["gvo"] = {"Gavião Do Jiparaná"}, ["gvp"] = {"Pará Gavião"}, ["gvr"] = {"Gurung"}, ["gvs"] = {"Gumawana"}, ["gvy"] = {"Guyani"}, ["gwa"] = {"Mbato"}, ["gwb"] = {"Gwa"}, ["gwc"] = {"Gawri", "Kalami"}, ["gwd"] = {"Gawwada"}, ["gwe"] = {"Gweno"}, ["gwf"] = {"Gowro"}, ["gwg"] = {"Moo"}, ["gwi"] = {"Gwichʼin"}, ["gwj"] = {"ǀGwi"}, ["gwm"] = {"Awngthim"}, ["gwn"] = {"Gwandara"}, ["gwr"] = {"Gwere"}, ["gwt"] = {"Gawar-Bati"}, ["gwu"] = {"Guwamu"}, ["gww"] = {"Kwini"}, ["gwx"] = {"Gua"}, ["gxx"] = {"Wè Southern"}, ["gya"] = {"Northwest Gbaya"}, ["gyb"] = {"Garus"}, ["gyd"] = {"Kayardild"}, ["gye"] = {"Gyem"}, ["gyf"] = {"Gungabula"}, ["gyg"] = {"Gbayi"}, ["gyi"] = {"Gyele"}, ["gyl"] = {"Gayil"}, ["gym"] = {"Ngäbere"}, ["gyn"] = {"Guyanese Creole English"}, ["gyo"] = {"Gyalsumdo"}, ["gyr"] = {"Guarayu"}, ["gyy"] = {"Gunya"}, ["gyz"] = {"Geji", "Gyaazi"}, ["gza"] = {"Ganza"}, ["gzi"] = {"Gazi"}, ["gzn"] = {"Gane"}, ["haa"] = {"Han"}, ["hab"] = {"Hanoi Sign Language"}, ["hac"] = {"Gurani"}, ["had"] = {"Hatam"}, ["hae"] = {"Eastern Oromo"}, ["haf"] = {"Haiphong Sign Language"}, ["hag"] = {"Hanga"}, ["hah"] = {"Hahon"}, ["hai"] = {"Haida"}, ["haj"] = {"Hajong"}, ["hak"] = {"Hakka Chinese"}, ["hal"] = {"Halang"}, ["ham"] = {"Hewa"}, ["han"] = {"Hangaza"}, ["hao"] = {"Hakö"}, ["hap"] = {"Hupla"}, ["haq"] = {"Ha"}, ["har"] = {"Harari"}, ["has"] = {"Haisla"}, ["hav"] = {"Havu"}, ["haw"] = {"Hawaiian"}, ["hax"] = {"Southern Haida"}, ["hay"] = {"Haya"}, ["haz"] = {"Hazaragi"}, ["hba"] = {"Hamba"}, ["hbb"] = {"Huba"}, ["hbn"] = {"Heiban"}, ["hbo"] = {"Ancient Hebrew"}, ["hbu"] = {"Habu"}, ["hca"] = {"Andaman Creole Hindi"}, ["hch"] = {"Huichol"}, ["hdn"] = {"Northern Haida"}, ["hds"] = {"Honduras Sign Language"}, ["hdy"] = {"Hadiyya"}, ["hea"] = {"Northern Qiandong Miao"}, ["hed"] = {"Herdé"}, ["heg"] = {"Helong"}, ["heh"] = {"Hehe"}, ["hei"] = {"Heiltsuk"}, ["hem"] = {"Hemba"}, ["hgm"] = {"Haiǁom"}, ["hgw"] = {"Haigwai"}, ["hhi"] = {"Hoia Hoia"}, ["hhr"] = {"Kerak"}, ["hhy"] = {"Hoyahoya"}, ["hia"] = {"Lamang"}, ["hib"] = {"Hibito"}, ["hid"] = {"Hidatsa"}, ["hif"] = {"Fiji Hindi"}, ["hig"] = {"Kamwe"}, ["hih"] = {"Pamosu"}, ["hii"] = {"Hinduri"}, ["hij"] = {"Hijuk"}, ["hik"] = {"Seit-Kaitetu"}, ["hil"] = {"Hiligaynon"}, ["him"] = {"Himachali languages", "Western Pahari languages"}, ["hio"] = {"Tsoa"}, ["hir"] = {"Himarimã"}, ["hit"] = {"Hittite"}, ["hiw"] = {"Hiw"}, ["hix"] = {"Hixkaryána"}, ["hji"] = {"Haji"}, ["hka"] = {"Kahe"}, ["hke"] = {"Hunde"}, ["hkh"] = {"Khah", "Poguli"}, ["hkk"] = {"Hunjara-Kaina Ke"}, ["hkn"] = {"Mel-Khaonh"}, ["hks"] = {"Hong Kong Sign Language", "Heung Kong Sau Yue"}, ["hla"] = {"Halia"}, ["hlb"] = {"Halbi"}, ["hld"] = {"Halang Doan"}, ["hle"] = {"Hlersu"}, ["hlt"] = {"Matu Chin"}, ["hlu"] = {"Hieroglyphic Luwian"}, ["hma"] = {"Southern Mashan Hmong", "Southern Mashan Miao"}, ["hmb"] = {"Humburi Senni Songhay"}, ["hmc"] = {"Central Huishui Hmong", "Central Huishui Miao"}, ["hmd"] = {"Large Flowery Miao", "A-hmaos", "Da-Hua Miao"}, ["hme"] = {"Eastern Huishui Hmong", "Eastern Huishui Miao"}, ["hmf"] = {"Hmong Don"}, ["hmg"] = {"Southwestern Guiyang Hmong"}, ["hmh"] = {"Southwestern Huishui Hmong", "Southwestern Huishui Miao"}, ["hmi"] = {"Northern Huishui Hmong", "Northern Huishui Miao"}, ["hmj"] = {"Ge", "Gejia"}, ["hmk"] = {"Maek"}, ["hml"] = {"Luopohe Hmong", "Luopohe Miao"}, ["hmm"] = {"Central Mashan Hmong", "Central Mashan Miao"}, ["hmn"] = {"Hmong", "Mong"}, ["hmp"] = {"Northern Mashan Hmong", "Northern Mashan Miao"}, ["hmq"] = {"Eastern Qiandong Miao"}, ["hmr"] = {"Hmar"}, ["hms"] = {"Southern Qiandong Miao"}, ["hmt"] = {"Hamtai"}, ["hmu"] = {"Hamap"}, ["hmv"] = {"Hmong Dô"}, ["hmw"] = {"Western Mashan Hmong", "Western Mashan Miao"}, ["hmx"] = {"Hmong-Mien languages"}, ["hmy"] = {"Southern Guiyang Hmong", "Southern Guiyang Miao"}, ["hmz"] = {"Hmong Shua", "Sinicized Miao"}, ["hna"] = {"Mina (Cameroon)"}, ["hnd"] = {"Southern Hindko"}, ["hne"] = {"Chhattisgarhi"}, ["hng"] = {"Hungu"}, ["hnh"] = {"ǁAni"}, ["hni"] = {"Hani"}, ["hnj"] = {"Hmong Njua", "Mong Leng", "Mong Njua"}, ["hnn"] = {"Hanunoo"}, ["hno"] = {"Northern Hindko"}, ["hns"] = {"Caribbean Hindustani"}, ["hnu"] = {"Hung"}, ["hoa"] = {"Hoava"}, ["hob"] = {"Mari (Madang Province)"}, ["hoc"] = {"Ho"}, ["hod"] = {"Holma"}, ["hoe"] = {"Horom"}, ["hoh"] = {"Hobyót"}, ["hoi"] = {"Holikachuk"}, ["hoj"] = {"Hadothi", "Haroti"}, ["hok"] = {"Hokan languages"}, ["hol"] = {"Holu"}, ["hom"] = {"Homa"}, ["hoo"] = {"Holoholo"}, ["hop"] = {"Hopi"}, ["hor"] = {"Horo"}, ["hos"] = {"Ho Chi Minh City Sign Language"}, ["hot"] = {"Hote", "Malê"}, ["hov"] = {"Hovongan"}, ["how"] = {"Honi"}, ["hoy"] = {"Holiya"}, ["hoz"] = {"Hozo"}, ["hpo"] = {"Hpon"}, ["hps"] = {"Hawai'i Sign Language (HSL)", "Hawai'i Pidgin Sign Language"}, ["hra"] = {"Hrangkhol"}, ["hrc"] = {"Niwer Mil"}, ["hre"] = {"Hre"}, ["hrk"] = {"Haruku"}, ["hrm"] = {"Horned Miao"}, ["hro"] = {"Haroi"}, ["hrp"] = {"Nhirrpi"}, ["hrt"] = {"Hértevin"}, ["hru"] = {"Hruso"}, ["hrw"] = {"Warwar Feni"}, ["hrx"] = {"Hunsrik"}, ["hrz"] = {"Harzani"}, ["hsb"] = {"Upper Sorbian"}, ["hsh"] = {"Hungarian Sign Language"}, ["hsl"] = {"Hausa Sign Language"}, ["hsn"] = {"Xiang Chinese"}, ["hss"] = {"Harsusi"}, ["hti"] = {"Hoti"}, ["hto"] = {"Minica Huitoto"}, ["hts"] = {"Hadza"}, ["htu"] = {"Hitu"}, ["htx"] = {"Middle Hittite"}, ["hub"] = {"Huambisa"}, ["huc"] = {"ǂHua", "ǂʼAmkhoe"}, ["hud"] = {"Huaulu"}, ["hue"] = {"San Francisco Del Mar Huave"}, ["huf"] = {"Humene"}, ["hug"] = {"Huachipaeri"}, ["huh"] = {"Huilliche"}, ["hui"] = {"Huli"}, ["huj"] = {"Northern Guiyang Hmong", "Northern Guiyang Miao"}, ["huk"] = {"Hulung"}, ["hul"] = {"Hula"}, ["hum"] = {"Hungana"}, ["huo"] = {"Hu"}, ["hup"] = {"Hupa"}, ["huq"] = {"Tsat"}, ["hur"] = {"Halkomelem"}, ["hus"] = {"Huastec"}, ["hut"] = {"Humla"}, ["huu"] = {"Murui Huitoto"}, ["huv"] = {"San Mateo Del Mar Huave"}, ["huw"] = {"Hukumina"}, ["hux"] = {"Nüpode Huitoto"}, ["huy"] = {"Hulaulá"}, ["huz"] = {"Hunzib"}, ["hvc"] = {"Haitian Vodoun Culture Language"}, ["hve"] = {"San Dionisio Del Mar Huave"}, ["hvk"] = {"Haveke"}, ["hvn"] = {"Sabu"}, ["hvv"] = {"Santa María Del Mar Huave"}, ["hwa"] = {"Wané"}, ["hwc"] = {"Hawai'i Creole English", "Hawai'i Pidgin"}, ["hwo"] = {"Hwana"}, ["hya"] = {"Hya"}, ["hyw"] = {"Western Armenian"}, ["hyx"] = {"Armenian (family)"}, ["iai"] = {"Iaai"}, ["ian"] = {"Iatmul"}, ["iar"] = {"Purari"}, ["iba"] = {"Iban"}, ["ibb"] = {"Ibibio"}, ["ibd"] = {"Iwaidja"}, ["ibe"] = {"Akpes"}, ["ibg"] = {"Ibanag"}, ["ibh"] = {"Bih"}, ["ibl"] = {"Ibaloi"}, ["ibm"] = {"Agoi"}, ["ibn"] = {"Ibino"}, ["ibr"] = {"Ibuoro"}, ["ibu"] = {"Ibu"}, ["iby"] = {"Ibani"}, ["ica"] = {"Ede Ica"}, ["ich"] = {"Etkywan"}, ["icl"] = {"Icelandic Sign Language"}, ["icr"] = {"Islander Creole English"}, ["ida"] = {"Idakho-Isukha-Tiriki", "Luidakho-Luisukha-Lutirichi"}, ["idb"] = {"Indo-Portuguese"}, ["idc"] = {"Idon", "Ajiya"}, ["idd"] = {"Ede Idaca"}, ["ide"] = {"Idere"}, ["idi"] = {"Idi"}, ["idr"] = {"Indri"}, ["ids"] = {"Idesa"}, ["idt"] = {"Idaté"}, ["idu"] = {"Idoma"}, ["ifa"] = {"Amganad Ifugao"}, ["ifb"] = {"Batad Ifugao", "Ayangan Ifugao"}, ["ife"] = {"Ifè"}, ["iff"] = {"Ifo"}, ["ifk"] = {"Tuwali Ifugao"}, ["ifm"] = {"Teke-Fuumu"}, ["ifu"] = {"Mayoyao Ifugao"}, ["ify"] = {"Keley-I Kallahan"}, ["igb"] = {"Ebira"}, ["ige"] = {"Igede"}, ["igg"] = {"Igana"}, ["igl"] = {"Igala"}, ["igm"] = {"Kanggape"}, ["ign"] = {"Ignaciano"}, ["igo"] = {"Isebe"}, ["igs"] = {"Interglossa"}, ["igw"] = {"Igwe"}, ["ihb"] = {"Iha Based Pidgin"}, ["ihi"] = {"Ihievbe"}, ["ihp"] = {"Iha"}, ["ihw"] = {"Bidhawal"}, ["iin"] = {"Thiin"}, ["iir"] = {"Indo-Iranian languages"}, ["ijc"] = {"Izon"}, ["ije"] = {"Biseni"}, ["ijj"] = {"Ede Ije"}, ["ijn"] = {"Kalabari"}, ["ijo"] = {"Ijo languages"}, ["ijs"] = {"Southeast Ijo"}, ["ike"] = {"Eastern Canadian Inuktitut"}, ["iki"] = {"Iko"}, ["ikk"] = {"Ika"}, ["ikl"] = {"Ikulu"}, ["iko"] = {"Olulumo-Ikom"}, ["ikp"] = {"Ikpeshi"}, ["ikr"] = {"Ikaranggal"}, ["iks"] = {"Inuit Sign Language"}, ["ikt"] = {"Inuinnaqtun", "Western Canadian Inuktitut"}, ["ikv"] = {"Iku-Gora-Ankwa"}, ["ikw"] = {"Ikwere"}, ["ikx"] = {"Ik"}, ["ikz"] = {"Ikizu"}, ["ila"] = {"Ile Ape"}, ["ilb"] = {"Ila"}, ["ilg"] = {"Garig-Ilgar"}, ["ili"] = {"Ili Turki"}, ["ilk"] = {"Ilongot"}, ["ilm"] = {"Iranun (Malaysia)"}, ["ilo"] = {"Iloko"}, ["ilp"] = {"Iranun (Philippines)"}, ["ils"] = {"International Sign"}, ["ilu"] = {"Ili'uun"}, ["ilv"] = {"Ilue"}, ["ima"] = {"Mala Malasar"}, ["imi"] = {"Anamgura"}, ["iml"] = {"Miluk"}, ["imn"] = {"Imonda"}, ["imo"] = {"Imbongu"}, ["imr"] = {"Imroing"}, ["ims"] = {"Marsian"}, ["imt"] = {"Imotong"}, ["imy"] = {"Milyan"}, ["inb"] = {"Inga"}, ["inc"] = {"Indic languages"}, ["ine"] = {"Indo-European languages"}, ["ing"] = {"Degexit'an"}, ["inh"] = {"Ingush"}, ["inj"] = {"Jungle Inga"}, ["inl"] = {"Indonesian Sign Language"}, ["inm"] = {"Minaean"}, ["inn"] = {"Isinai"}, ["ino"] = {"Inoke-Yate"}, ["inp"] = {"Iñapari"}, ["ins"] = {"Indian Sign Language"}, ["int"] = {"Intha"}, ["inz"] = {"Ineseño"}, ["ior"] = {"Inor"}, ["iou"] = {"Tuma-Irumu"}, ["iow"] = {"Iowa-Oto"}, ["ipi"] = {"Ipili"}, ["ipo"] = {"Ipiko"}, ["iqu"] = {"Iquito"}, ["iqw"] = {"Ikwo"}, ["ira"] = {"Iranian languages"}, ["ire"] = {"Iresim"}, ["irh"] = {"Irarutu"}, ["iri"] = {"Rigwe", "Irigwe"}, ["irk"] = {"Iraqw"}, ["irn"] = {"Irántxe"}, ["iro"] = {"Iroquoian languages"}, ["irr"] = {"Ir"}, ["iru"] = {"Irula"}, ["irx"] = {"Kamberau"}, ["iry"] = {"Iraya"}, ["isa"] = {"Isabi"}, ["isc"] = {"Isconahua"}, ["isd"] = {"Isnag"}, ["ise"] = {"Italian Sign Language"}, ["isg"] = {"Irish Sign Language"}, ["ish"] = {"Esan"}, ["isi"] = {"Nkem-Nkum"}, ["isk"] = {"Ishkashimi"}, ["ism"] = {"Masimasi"}, ["isn"] = {"Isanzu"}, ["iso"] = {"Isoko"}, ["isr"] = {"Israeli Sign Language"}, ["ist"] = {"Istriot"}, ["isu"] = {"Isu (Menchum Division)"}, ["itb"] = {"Binongan Itneg"}, ["itc"] = {"Italic languages"}, ["itd"] = {"Southern Tidung"}, ["ite"] = {"Itene"}, ["iti"] = {"Inlaod Itneg"}, ["itk"] = {"Judeo-Italian"}, ["itl"] = {"Itelmen"}, ["itm"] = {"Itu Mbon Uzo"}, ["ito"] = {"Itonama"}, ["itr"] = {"Iteri"}, ["its"] = {"Isekiri"}, ["itt"] = {"Maeng Itneg"}, ["itv"] = {"Itawit"}, ["itw"] = {"Ito"}, ["itx"] = {"Itik"}, ["ity"] = {"Moyadan Itneg"}, ["itz"] = {"Itzá"}, ["ium"] = {"Iu Mien"}, ["ivb"] = {"Ibatan"}, ["ivv"] = {"Ivatan"}, ["iwk"] = {"I-Wak"}, ["iwm"] = {"Iwam"}, ["iwo"] = {"Iwur"}, ["iws"] = {"Sepik Iwam"}, ["ixc"] = {"Ixcatec"}, ["ixl"] = {"Ixil"}, ["iya"] = {"Iyayu"}, ["iyo"] = {"Mesaka"}, ["iyx"] = {"Yaka (Congo)"}, ["izh"] = {"Ingrian"}, ["izr"] = {"Izere"}, ["izz"] = {"Izii"}, ["jaa"] = {"Jamamadí"}, ["jab"] = {"Hyam"}, ["jac"] = {"Popti'", "Jakalteko"}, ["jad"] = {"Jahanka"}, ["jae"] = {"Yabem"}, ["jaf"] = {"Jara"}, ["jah"] = {"Jah Hut"}, ["jaj"] = {"Zazao"}, ["jak"] = {"Jakun"}, ["jal"] = {"Yalahatan"}, ["jam"] = {"Jamaican Creole English"}, ["jan"] = {"Jandai"}, ["jao"] = {"Yanyuwa"}, ["jaq"] = {"Yaqay"}, ["jas"] = {"New Caledonian Javanese"}, ["jat"] = {"Jakati"}, ["jau"] = {"Yaur"}, ["jax"] = {"Jambi Malay"}, ["jay"] = {"Yan-nhangu", "Nhangu"}, ["jaz"] = {"Jawe"}, ["jbe"] = {"Judeo-Berber"}, ["jbi"] = {"Badjiri"}, ["jbj"] = {"Arandai"}, ["jbk"] = {"Barikewa"}, ["jbm"] = {"Bijim"}, ["jbn"] = {"Nafusi"}, ["jbo"] = {"Lojban"}, ["jbr"] = {"Jofotek-Bromnya"}, ["jbt"] = {"Jabutí"}, ["jbu"] = {"Jukun Takum"}, ["jbw"] = {"Yawijibaya"}, ["jcs"] = {"Jamaican Country Sign Language"}, ["jct"] = {"Krymchak"}, ["jda"] = {"Jad"}, ["jdg"] = {"Jadgali"}, ["jdt"] = {"Judeo-Tat"}, ["jeb"] = {"Jebero"}, ["jee"] = {"Jerung"}, ["jeh"] = {"Jeh"}, ["jei"] = {"Yei"}, ["jek"] = {"Jeri Kuo"}, ["jel"] = {"Yelmek"}, ["jen"] = {"Dza"}, ["jer"] = {"Jere"}, ["jet"] = {"Manem"}, ["jeu"] = {"Jonkor Bourmataguil"}, ["jgb"] = {"Ngbee"}, ["jge"] = {"Judeo-Georgian"}, ["jgk"] = {"Gwak"}, ["jgo"] = {"Ngomba"}, ["jhi"] = {"Jehai"}, ["jhs"] = {"Jhankot Sign Language"}, ["jia"] = {"Jina"}, ["jib"] = {"Jibu"}, ["jic"] = {"Tol"}, ["jid"] = {"Bu (Kaduna State)"}, ["jie"] = {"Jilbe"}, ["jig"] = {"Jingulu", "Djingili"}, ["jih"] = {"sTodsde", "Shangzhai"}, ["jii"] = {"Jiiddu"}, ["jil"] = {"Jilim"}, ["jim"] = {"Jimi (Cameroon)"}, ["jio"] = {"Jiamao"}, ["jiq"] = {"Guanyinqiao", "Lavrung"}, ["jit"] = {"Jita"}, ["jiu"] = {"Youle Jinuo"}, ["jiv"] = {"Shuar"}, ["jiy"] = {"Buyuan Jinuo"}, ["jje"] = {"Jejueo"}, ["jjr"] = {"Bankal"}, ["jka"] = {"Kaera"}, ["jkm"] = {"Mobwa Karen"}, ["jko"] = {"Kubo"}, ["jkp"] = {"Paku Karen"}, ["jkr"] = {"Koro (India)"}, ["jks"] = {"Amami Koniya Sign Language"}, ["jku"] = {"Labir"}, ["jle"] = {"Ngile"}, ["jls"] = {"Jamaican Sign Language"}, ["jma"] = {"Dima"}, ["jmb"] = {"Zumbun"}, ["jmc"] = {"Machame"}, ["jmd"] = {"Yamdena"}, ["jmi"] = {"Jimi (Nigeria)"}, ["jml"] = {"Jumli"}, ["jmn"] = {"Makuri Naga"}, ["jmr"] = {"Kamara"}, ["jms"] = {"Mashi (Nigeria)"}, ["jmw"] = {"Mouwase"}, ["jmx"] = {"Western Juxtlahuaca Mixtec"}, ["jna"] = {"Jangshung"}, ["jnd"] = {"Jandavra"}, ["jng"] = {"Yangman"}, ["jni"] = {"Janji"}, ["jnj"] = {"Yemsa"}, ["jnl"] = {"Rawat"}, ["jns"] = {"Jaunsari"}, ["job"] = {"Joba"}, ["jod"] = {"Wojenaka"}, ["jog"] = {"Jogi"}, ["jor"] = {"Jorá"}, ["jos"] = {"Jordanian Sign Language"}, ["jow"] = {"Jowulu"}, ["jpa"] = {"Jewish Palestinian Aramaic"}, ["jpr"] = {"Judeo-Persian"}, ["jpx"] = {"Japanese (family)"}, ["jqr"] = {"Jaqaru"}, ["jra"] = {"Jarai"}, ["jrb"] = {"Judeo-Arabic"}, ["jrr"] = {"Jiru"}, ["jrt"] = {"Jakattoe"}, ["jru"] = {"Japrería"}, ["jsl"] = {"Japanese Sign Language"}, ["jua"] = {"Júma"}, ["jub"] = {"Wannu"}, ["juc"] = {"Jurchen"}, ["jud"] = {"Worodougou"}, ["juh"] = {"Hõne"}, ["jui"] = {"Ngadjuri"}, ["juk"] = {"Wapan"}, ["jul"] = {"Jirel"}, ["jum"] = {"Jumjum"}, ["jun"] = {"Juang"}, ["juo"] = {"Jiba"}, ["jup"] = {"Hupdë"}, ["jur"] = {"Jurúna"}, ["jus"] = {"Jumla Sign Language"}, ["jut"] = {"Jutish"}, ["juu"] = {"Ju"}, ["juw"] = {"Wãpha"}, ["juy"] = {"Juray"}, ["jvd"] = {"Javindo"}, ["jvn"] = {"Caribbean Javanese"}, ["jwi"] = {"Jwira-Pepesa"}, ["jya"] = {"Jiarong"}, ["jye"] = {"Judeo-Yemeni Arabic"}, ["jyy"] = {"Jaya"}, ["kaa"] = {"Kara-Kalpak", "Karakalpak"}, ["kab"] = {"Kabyle"}, ["kac"] = {"Kachin", "Jingpho"}, ["kad"] = {"Adara"}, ["kae"] = {"Ketangalan"}, ["kaf"] = {"Katso"}, ["kag"] = {"Kajaman"}, ["kah"] = {"Kara (Central African Republic)"}, ["kai"] = {"Karekare"}, ["kaj"] = {"Jju"}, ["kak"] = {"Kalanguya", "Kayapa Kallahan"}, ["kam"] = {"Kamba (Kenya)"}, ["kao"] = {"Xaasongaxango"}, ["kap"] = {"Bezhta"}, ["kaq"] = {"Capanahua"}, ["kar"] = {"Karen languages"}, ["kav"] = {"Katukína"}, ["kaw"] = {"Kawi"}, ["kax"] = {"Kao"}, ["kay"] = {"Kamayurá"}, ["kba"] = {"Kalarko"}, ["kbb"] = {"Kaxuiâna"}, ["kbc"] = {"Kadiwéu"}, ["kbd"] = {"Kabardian"}, ["kbe"] = {"Kanju"}, ["kbg"] = {"Khamba"}, ["kbh"] = {"Camsá"}, ["kbi"] = {"Kaptiau"}, ["kbj"] = {"Kari"}, ["kbk"] = {"Grass Koiari"}, ["kbl"] = {"Kanembu"}, ["kbm"] = {"Iwal"}, ["kbn"] = {"Kare (Central African Republic)"}, ["kbo"] = {"Keliko"}, ["kbp"] = {"Kabiyè"}, ["kbq"] = {"Kamano"}, ["kbr"] = {"Kafa"}, ["kbs"] = {"Kande"}, ["kbt"] = {"Abadi"}, ["kbu"] = {"Kabutra"}, ["kbv"] = {"Dera (Indonesia)"}, ["kbw"] = {"Kaiep"}, ["kbx"] = {"Ap Ma"}, ["kby"] = {"Manga Kanuri"}, ["kbz"] = {"Duhwa"}, ["kca"] = {"Khanty"}, ["kcb"] = {"Kawacha"}, ["kcc"] = {"Lubila"}, ["kcd"] = {"Ngkâlmpw Kanum"}, ["kce"] = {"Kaivi"}, ["kcf"] = {"Ukaan"}, ["kcg"] = {"Tyap"}, ["kch"] = {"Vono"}, ["kci"] = {"Kamantan"}, ["kcj"] = {"Kobiana"}, ["kck"] = {"Kalanga"}, ["kcl"] = {"Kela (Papua New Guinea)", "Kala"}, ["kcm"] = {"Gula (Central African Republic)"}, ["kcn"] = {"Nubi"}, ["kco"] = {"Kinalakna"}, ["kcp"] = {"Kanga"}, ["kcq"] = {"Kamo"}, ["kcr"] = {"Katla"}, ["kcs"] = {"Koenoem"}, ["kct"] = {"Kaian"}, ["kcu"] = {"Kami (Tanzania)"}, ["kcv"] = {"Kete"}, ["kcw"] = {"Kabwari"}, ["kcx"] = {"Kachama-Ganjule"}, ["kcy"] = {"Korandje"}, ["kcz"] = {"Konongo"}, ["kda"] = {"Worimi"}, ["kdc"] = {"Kutu"}, ["kdd"] = {"Yankunytjatjara"}, ["kde"] = {"Makonde"}, ["kdf"] = {"Mamusi"}, ["kdg"] = {"Seba"}, ["kdh"] = {"Tem"}, ["kdi"] = {"Kumam"}, ["kdj"] = {"Karamojong"}, ["kdk"] = {"Numèè", "Kwényi"}, ["kdl"] = {"Tsikimba"}, ["kdm"] = {"Kagoma"}, ["kdn"] = {"Kunda"}, ["kdo"] = {"Kordofanian languages"}, ["kdp"] = {"Kaningdon-Nindem"}, ["kdq"] = {"Koch"}, ["kdr"] = {"Karaim"}, ["kdt"] = {"Kuy"}, ["kdu"] = {"Kadaru"}, ["kdw"] = {"Koneraw"}, ["kdx"] = {"Kam"}, ["kdy"] = {"Keder", "Keijar"}, ["kdz"] = {"Kwaja"}, ["kea"] = {"Kabuverdianu"}, ["keb"] = {"Kélé"}, ["kec"] = {"Keiga"}, ["ked"] = {"Kerewe"}, ["kee"] = {"Eastern Keres"}, ["kef"] = {"Kpessi"}, ["keg"] = {"Tese"}, ["keh"] = {"Keak"}, ["kei"] = {"Kei"}, ["kej"] = {"Kadar"}, ["kek"] = {"Kekchí"}, ["kel"] = {"Kela (Democratic Republic of Congo)"}, ["kem"] = {"Kemak"}, ["ken"] = {"Kenyang"}, ["keo"] = {"Kakwa"}, ["kep"] = {"Kaikadi"}, ["keq"] = {"Kamar"}, ["ker"] = {"Kera"}, ["kes"] = {"Kugbo"}, ["ket"] = {"Ket"}, ["keu"] = {"Akebu"}, ["kev"] = {"Kanikkaran"}, ["kew"] = {"West Kewa"}, ["kex"] = {"Kukna"}, ["key"] = {"Kupia"}, ["kez"] = {"Kukele"}, ["kfa"] = {"Kodava"}, ["kfb"] = {"Northwestern Kolami"}, ["kfc"] = {"Konda-Dora"}, ["kfd"] = {"Korra Koraga"}, ["kfe"] = {"Kota (India)"}, ["kff"] = {"Koya"}, ["kfg"] = {"Kudiya"}, ["kfh"] = {"Kurichiya"}, ["kfi"] = {"Kannada Kurumba"}, ["kfj"] = {"Kemiehua"}, ["kfk"] = {"Kinnauri"}, ["kfl"] = {"Kung"}, ["kfm"] = {"Khunsari"}, ["kfn"] = {"Kuk"}, ["kfo"] = {"Koro (Côte d'Ivoire)"}, ["kfp"] = {"Korwa"}, ["kfq"] = {"Korku"}, ["kfr"] = {"Kachhi", "Kutchi"}, ["kfs"] = {"Bilaspuri"}, ["kft"] = {"Kanjari"}, ["kfu"] = {"Katkari"}, ["kfv"] = {"Kurmukar"}, ["kfw"] = {"Kharam Naga"}, ["kfx"] = {"Kullu Pahari"}, ["kfy"] = {"Kumaoni"}, ["kfz"] = {"Koromfé"}, ["kga"] = {"Koyaga"}, ["kgb"] = {"Kawe"}, ["kge"] = {"Komering"}, ["kgf"] = {"Kube"}, ["kgg"] = {"Kusunda"}, ["kgi"] = {"Selangor Sign Language"}, ["kgj"] = {"Gamale Kham"}, ["kgk"] = {"Kaiwá"}, ["kgl"] = {"Kunggari"}, ["kgm"] = {"Karipúna"}, ["kgn"] = {"Karingani"}, ["kgo"] = {"Krongo"}, ["kgp"] = {"Kaingang"}, ["kgq"] = {"Kamoro"}, ["kgr"] = {"Abun"}, ["kgs"] = {"Kumbainggar"}, ["kgt"] = {"Somyev"}, ["kgu"] = {"Kobol"}, ["kgv"] = {"Karas"}, ["kgw"] = {"Karon Dori"}, ["kgx"] = {"Kamaru"}, ["kgy"] = {"Kyerung"}, ["kha"] = {"Khasi"}, ["khb"] = {"Lü"}, ["khc"] = {"Tukang Besi North"}, ["khd"] = {"Bädi Kanum"}, ["khe"] = {"Korowai"}, ["khf"] = {"Khuen"}, ["khg"] = {"Khams Tibetan"}, ["khh"] = {"Kehu"}, ["khi"] = {"Khoisan languages"}, ["khj"] = {"Kuturmi"}, ["khk"] = {"Halh Mongolian"}, ["khl"] = {"Lusi"}, ["khn"] = {"Khandesi"}, ["kho"] = {"Khotanese", "Sakan"}, ["khp"] = {"Kapori", "Kapauri"}, ["khq"] = {"Koyra Chiini Songhay"}, ["khr"] = {"Kharia"}, ["khs"] = {"Kasua"}, ["kht"] = {"Khamti"}, ["khu"] = {"Nkhumbi"}, ["khv"] = {"Khvarshi"}, ["khw"] = {"Khowar"}, ["khx"] = {"Kanu"}, ["khy"] = {"Kele (Democratic Republic of Congo)"}, ["khz"] = {"Keapara"}, ["kia"] = {"Kim"}, ["kib"] = {"Koalib"}, ["kic"] = {"Kickapoo"}, ["kid"] = {"Koshin"}, ["kie"] = {"Kibet"}, ["kif"] = {"Eastern Parbate Kham"}, ["kig"] = {"Kimaama", "Kimaghima"}, ["kih"] = {"Kilmeri"}, ["kii"] = {"Kitsai"}, ["kij"] = {"Kilivila"}, ["kil"] = {"Kariya"}, ["kim"] = {"Karagas"}, ["kio"] = {"Kiowa"}, ["kip"] = {"Sheshi Kham"}, ["kiq"] = {"Kosadle", "Kosare"}, ["kis"] = {"Kis"}, ["kit"] = {"Agob"}, ["kiu"] = {"Kirmanjki (individual language)"}, ["kiv"] = {"Kimbu"}, ["kiw"] = {"Northeast Kiwai"}, ["kix"] = {"Khiamniungan Naga"}, ["kiy"] = {"Kirikiri"}, ["kiz"] = {"Kisi"}, ["kja"] = {"Mlap"}, ["kjb"] = {"Q'anjob'al", "Kanjobal"}, ["kjc"] = {"Coastal Konjo"}, ["kjd"] = {"Southern Kiwai"}, ["kje"] = {"Kisar"}, ["kjg"] = {"Khmu"}, ["kjh"] = {"Khakas"}, ["kji"] = {"Zabana"}, ["kjj"] = {"Khinalugh"}, ["kjk"] = {"Highland Konjo"}, ["kjl"] = {"Western Parbate Kham"}, ["kjm"] = {"Kháng"}, ["kjn"] = {"Kunjen"}, ["kjo"] = {"Harijan Kinnauri"}, ["kjp"] = {"Pwo Eastern Karen"}, ["kjq"] = {"Western Keres"}, ["kjr"] = {"Kurudu"}, ["kjs"] = {"East Kewa"}, ["kjt"] = {"Phrae Pwo Karen"}, ["kju"] = {"Kashaya"}, ["kjv"] = {"Kaikavian Literary Language"}, ["kjx"] = {"Ramopa"}, ["kjy"] = {"Erave"}, ["kjz"] = {"Bumthangkha"}, ["kka"] = {"Kakanda"}, ["kkb"] = {"Kwerisa"}, ["kkc"] = {"Odoodee"}, ["kkd"] = {"Kinuku"}, ["kke"] = {"Kakabe"}, ["kkf"] = {"Kalaktang Monpa"}, ["kkg"] = {"Mabaka Valley Kalinga"}, ["kkh"] = {"Khün"}, ["kki"] = {"Kagulu"}, ["kkj"] = {"Kako"}, ["kkk"] = {"Kokota"}, ["kkl"] = {"Kosarek Yale"}, ["kkm"] = {"Kiong"}, ["kkn"] = {"Kon Keu"}, ["kko"] = {"Karko"}, ["kkp"] = {"Gugubera", "Koko-Bera"}, ["kkq"] = {"Kaeku"}, ["kkr"] = {"Kir-Balar"}, ["kks"] = {"Giiwo"}, ["kkt"] = {"Koi"}, ["kku"] = {"Tumi"}, ["kkv"] = {"Kangean"}, ["kkw"] = {"Teke-Kukuya"}, ["kkx"] = {"Kohin"}, ["kky"] = {"Guugu Yimidhirr", "Guguyimidjir"}, ["kkz"] = {"Kaska"}, ["kla"] = {"Klamath-Modoc"}, ["klb"] = {"Kiliwa"}, ["klc"] = {"Kolbila"}, ["kld"] = {"Gamilaraay"}, ["kle"] = {"Kulung (Nepal)"}, ["klf"] = {"Kendeje"}, ["klg"] = {"Tagakaulo"}, ["klh"] = {"Weliki"}, ["kli"] = {"Kalumpang"}, ["klj"] = {"Khalaj"}, ["klk"] = {"Kono (Nigeria)"}, ["kll"] = {"Kagan Kalagan"}, ["klm"] = {"Migum"}, ["kln"] = {"Kalenjin"}, ["klo"] = {"Kapya"}, ["klp"] = {"Kamasa"}, ["klq"] = {"Rumu"}, ["klr"] = {"Khaling"}, ["kls"] = {"Kalasha"}, ["klt"] = {"Nukna"}, ["klu"] = {"Klao"}, ["klv"] = {"Maskelynes"}, ["klw"] = {"Tado", "Lindu"}, ["klx"] = {"Koluwawa"}, ["kly"] = {"Kalao"}, ["klz"] = {"Kabola"}, ["kma"] = {"Konni"}, ["kmb"] = {"Kimbundu"}, ["kmc"] = {"Southern Dong"}, ["kmd"] = {"Majukayang Kalinga"}, ["kme"] = {"Bakole"}, ["kmf"] = {"Kare (Papua New Guinea)"}, ["kmg"] = {"Kâte"}, ["kmh"] = {"Kalam"}, ["kmi"] = {"Kami (Nigeria)"}, ["kmj"] = {"Kumarbhag Paharia"}, ["kmk"] = {"Limos Kalinga"}, ["kml"] = {"Tanudan Kalinga"}, ["kmm"] = {"Kom (India)"}, ["kmn"] = {"Awtuw"}, ["kmo"] = {"Kwoma"}, ["kmp"] = {"Gimme"}, ["kmq"] = {"Kwama"}, ["kmr"] = {"Northern Kurdish"}, ["kms"] = {"Kamasau"}, ["kmt"] = {"Kemtuik"}, ["kmu"] = {"Kanite"}, ["kmv"] = {"Karipúna Creole French"}, ["kmw"] = {"Komo (Democratic Republic of Congo)"}, ["kmx"] = {"Waboda"}, ["kmy"] = {"Koma"}, ["kmz"] = {"Khorasani Turkish"}, ["kna"] = {"Dera (Nigeria)"}, ["knb"] = {"Lubuagan Kalinga"}, ["knc"] = {"Central Kanuri"}, ["knd"] = {"Konda"}, ["kne"] = {"Kankanaey"}, ["knf"] = {"Mankanya"}, ["kng"] = {"Koongo"}, ["kni"] = {"Kanufi"}, ["knj"] = {"Western Kanjobal"}, ["knk"] = {"Kuranko"}, ["knl"] = {"Keninjal"}, ["knm"] = {"Kanamarí"}, ["knn"] = {"Konkani (individual language)"}, ["kno"] = {"Kono (Sierra Leone)"}, ["knp"] = {"Kwanja"}, ["knq"] = {"Kintaq"}, ["knr"] = {"Kaningra"}, ["kns"] = {"Kensiu"}, ["knt"] = {"Panoan Katukína"}, ["knu"] = {"Kono (Guinea)"}, ["knv"] = {"Tabo"}, ["knw"] = {"Kung-Ekoka"}, ["knx"] = {"Kendayan", "Salako"}, ["kny"] = {"Kanyok"}, ["knz"] = {"Kalamsé"}, ["koa"] = {"Konomala"}, ["koc"] = {"Kpati"}, ["kod"] = {"Kodi"}, ["koe"] = {"Kacipo-Bale Suri"}, ["kof"] = {"Kubi"}, ["kog"] = {"Cogui", "Kogi"}, ["koh"] = {"Koyo"}, ["koi"] = {"Komi-Permyak"}, ["kok"] = {"Konkani (macrolanguage)"}, ["kol"] = {"Kol (Papua New Guinea)"}, ["koo"] = {"Konzo"}, ["kop"] = {"Waube"}, ["koq"] = {"Kota (Gabon)"}, ["kos"] = {"Kosraean"}, ["kot"] = {"Lagwan"}, ["kou"] = {"Koke"}, ["kov"] = {"Kudu-Camo"}, ["kow"] = {"Kugama"}, ["koy"] = {"Koyukon"}, ["koz"] = {"Korak"}, ["kpa"] = {"Kutto"}, ["kpb"] = {"Mullu Kurumba"}, ["kpc"] = {"Curripaco"}, ["kpd"] = {"Koba"}, ["kpe"] = {"Kpelle"}, ["kpf"] = {"Komba"}, ["kpg"] = {"Kapingamarangi"}, ["kph"] = {"Kplang"}, ["kpi"] = {"Kofei"}, ["kpj"] = {"Karajá"}, ["kpk"] = {"Kpan"}, ["kpl"] = {"Kpala"}, ["kpm"] = {"Koho"}, ["kpn"] = {"Kepkiriwát"}, ["kpo"] = {"Ikposo"}, ["kpq"] = {"Korupun-Sela"}, ["kpr"] = {"Korafe-Yegha"}, ["kps"] = {"Tehit"}, ["kpt"] = {"Karata"}, ["kpu"] = {"Kafoa"}, ["kpv"] = {"Komi-Zyrian"}, ["kpw"] = {"Kobon"}, ["kpx"] = {"Mountain Koiali"}, ["kpy"] = {"Koryak"}, ["kpz"] = {"Kupsabiny"}, ["kqa"] = {"Mum"}, ["kqb"] = {"Kovai"}, ["kqc"] = {"Doromu-Koki"}, ["kqd"] = {"Koy Sanjaq Surat"}, ["kqe"] = {"Kalagan"}, ["kqf"] = {"Kakabai"}, ["kqg"] = {"Khe"}, ["kqh"] = {"Kisankasa"}, ["kqi"] = {"Koitabu"}, ["kqj"] = {"Koromira"}, ["kqk"] = {"Kotafon Gbe"}, ["kql"] = {"Kyenele"}, ["kqm"] = {"Khisa"}, ["kqn"] = {"Kaonde"}, ["kqo"] = {"Eastern Krahn"}, ["kqp"] = {"Kimré"}, ["kqq"] = {"Krenak"}, ["kqr"] = {"Kimaragang"}, ["kqs"] = {"Northern Kissi"}, ["kqt"] = {"Klias River Kadazan"}, ["kqu"] = {"Seroa"}, ["kqv"] = {"Okolod"}, ["kqw"] = {"Kandas"}, ["kqx"] = {"Mser"}, ["kqy"] = {"Koorete"}, ["kqz"] = {"Korana"}, ["kra"] = {"Kumhali"}, ["krb"] = {"Karkin"}, ["krc"] = {"Karachay-Balkar"}, ["krd"] = {"Kairui-Midiki"}, ["kre"] = {"Panará"}, ["krf"] = {"Koro (Vanuatu)"}, ["krh"] = {"Kurama"}, ["kri"] = {"Krio"}, ["krj"] = {"Kinaray-A"}, ["krk"] = {"Kerek"}, ["krl"] = {"Karelian"}, ["krn"] = {"Sapo"}, ["kro"] = {"Kru languages"}, ["krp"] = {"Korop"}, ["krr"] = {"Krung"}, ["krs"] = {"Gbaya (Sudan)"}, ["krt"] = {"Tumari Kanuri"}, ["kru"] = {"Kurukh"}, ["krv"] = {"Kavet"}, ["krw"] = {"Western Krahn"}, ["krx"] = {"Karon"}, ["kry"] = {"Kryts"}, ["krz"] = {"Sota Kanum"}, ["ksa"] = {"Shuwa-Zamani"}, ["ksb"] = {"Shambala"}, ["ksc"] = {"Southern Kalinga"}, ["ksd"] = {"Kuanua"}, ["kse"] = {"Kuni"}, ["ksf"] = {"Bafia"}, ["ksg"] = {"Kusaghe"}, ["ksh"] = {"Kölsch"}, ["ksi"] = {"Krisa", "I'saka"}, ["ksj"] = {"Uare"}, ["ksk"] = {"Kansa"}, ["ksl"] = {"Kumalu"}, ["ksm"] = {"Kumba"}, ["ksn"] = {"Kasiguranin"}, ["kso"] = {"Kofa"}, ["ksp"] = {"Kaba"}, ["ksq"] = {"Kwaami"}, ["ksr"] = {"Borong"}, ["kss"] = {"Southern Kisi"}, ["kst"] = {"Winyé"}, ["ksu"] = {"Khamyang"}, ["ksv"] = {"Kusu"}, ["ksw"] = {"S'gaw Karen"}, ["ksx"] = {"Kedang"}, ["ksy"] = {"Kharia Thar"}, ["ksz"] = {"Kodaku"}, ["kta"] = {"Katua"}, ["ktb"] = {"Kambaata"}, ["ktc"] = {"Kholok"}, ["ktd"] = {"Kokata", "Kukatha"}, ["kte"] = {"Nubri"}, ["ktf"] = {"Kwami"}, ["ktg"] = {"Kalkutung"}, ["kth"] = {"Karanga"}, ["kti"] = {"North Muyu"}, ["ktj"] = {"Plapo Krumen"}, ["ktk"] = {"Kaniet"}, ["ktl"] = {"Koroshi"}, ["ktm"] = {"Kurti"}, ["ktn"] = {"Karitiâna"}, ["kto"] = {"Kuot"}, ["ktp"] = {"Kaduo"}, ["ktq"] = {"Katabaga"}, ["kts"] = {"South Muyu"}, ["ktt"] = {"Ketum"}, ["ktu"] = {"Kituba (Democratic Republic of Congo)"}, ["ktv"] = {"Eastern Katu"}, ["ktw"] = {"Kato"}, ["ktx"] = {"Kaxararí"}, ["kty"] = {"Kango (Bas-Uélé District)"}, ["ktz"] = {"Juǀʼhoan", "Juǀʼhoansi"}, ["kub"] = {"Kutep"}, ["kuc"] = {"Kwinsu"}, ["kud"] = {"'Auhelawa"}, ["kue"] = {"Kuman (Papua New Guinea)"}, ["kuf"] = {"Western Katu"}, ["kug"] = {"Kupa"}, ["kuh"] = {"Kushi"}, ["kui"] = {"Kuikúro-Kalapálo", "Kalapalo"}, ["kuj"] = {"Kuria"}, ["kuk"] = {"Kepo'"}, ["kul"] = {"Kulere"}, ["kum"] = {"Kumyk"}, ["kun"] = {"Kunama"}, ["kuo"] = {"Kumukio"}, ["kup"] = {"Kunimaipa"}, ["kuq"] = {"Karipuna"}, ["kus"] = {"Kusaal"}, ["kut"] = {"Kutenai"}, ["kuu"] = {"Upper Kuskokwim"}, ["kuv"] = {"Kur"}, ["kuw"] = {"Kpagua"}, ["kux"] = {"Kukatja"}, ["kuy"] = {"Kuuku-Ya'u"}, ["kuz"] = {"Kunza"}, ["kva"] = {"Bagvalal"}, ["kvb"] = {"Kubu"}, ["kvc"] = {"Kove"}, ["kvd"] = {"Kui (Indonesia)"}, ["kve"] = {"Kalabakan"}, ["kvf"] = {"Kabalai"}, ["kvg"] = {"Kuni-Boazi"}, ["kvh"] = {"Komodo"}, ["kvi"] = {"Kwang"}, ["kvj"] = {"Psikye"}, ["kvk"] = {"Korean Sign Language"}, ["kvl"] = {"Kayaw"}, ["kvm"] = {"Kendem"}, ["kvn"] = {"Border Kuna"}, ["kvo"] = {"Dobel"}, ["kvp"] = {"Kompane"}, ["kvq"] = {"Geba Karen"}, ["kvr"] = {"Kerinci"}, ["kvt"] = {"Lahta Karen", "Lahta"}, ["kvu"] = {"Yinbaw Karen"}, ["kvv"] = {"Kola"}, ["kvw"] = {"Wersing"}, ["kvx"] = {"Parkari Koli"}, ["kvy"] = {"Yintale Karen", "Yintale"}, ["kvz"] = {"Tsakwambo", "Tsaukambo"}, ["kwa"] = {"Dâw"}, ["kwb"] = {"Kwa"}, ["kwc"] = {"Likwala"}, ["kwd"] = {"Kwaio"}, ["kwe"] = {"Kwerba"}, ["kwf"] = {"Kwara'ae"}, ["kwg"] = {"Sara Kaba Deme"}, ["kwh"] = {"Kowiai"}, ["kwi"] = {"Awa-Cuaiquer"}, ["kwj"] = {"Kwanga"}, ["kwk"] = {"Kwakiutl"}, ["kwl"] = {"Kofyar"}, ["kwm"] = {"Kwambi"}, ["kwn"] = {"Kwangali"}, ["kwo"] = {"Kwomtari"}, ["kwp"] = {"Kodia"}, ["kwr"] = {"Kwer"}, ["kws"] = {"Kwese"}, ["kwt"] = {"Kwesten"}, ["kwu"] = {"Kwakum"}, ["kwv"] = {"Sara Kaba Náà"}, ["kww"] = {"Kwinti"}, ["kwx"] = {"Khirwar"}, ["kwy"] = {"San Salvador Kongo"}, ["kwz"] = {"Kwadi"}, ["kxa"] = {"Kairiru"}, ["kxb"] = {"Krobu"}, ["kxc"] = {"Konso", "Khonso"}, ["kxd"] = {"Brunei"}, ["kxf"] = {"Manumanaw Karen", "Manumanaw"}, ["kxh"] = {"Karo (Ethiopia)"}, ["kxi"] = {"Keningau Murut"}, ["kxj"] = {"Kulfa"}, ["kxk"] = {"Zayein Karen"}, ["kxm"] = {"Northern Khmer"}, ["kxn"] = {"Kanowit-Tanjong Melanau"}, ["kxo"] = {"Kanoé"}, ["kxp"] = {"Wadiyara Koli"}, ["kxq"] = {"Smärky Kanum"}, ["kxr"] = {"Koro (Papua New Guinea)"}, ["kxs"] = {"Kangjia"}, ["kxt"] = {"Koiwat"}, ["kxv"] = {"Kuvi"}, ["kxw"] = {"Konai"}, ["kxx"] = {"Likuba"}, ["kxy"] = {"Kayong"}, ["kxz"] = {"Kerewo"}, ["kya"] = {"Kwaya"}, ["kyb"] = {"Butbut Kalinga"}, ["kyc"] = {"Kyaka"}, ["kyd"] = {"Karey"}, ["kye"] = {"Krache"}, ["kyf"] = {"Kouya"}, ["kyg"] = {"Keyagana"}, ["kyh"] = {"Karok"}, ["kyi"] = {"Kiput"}, ["kyj"] = {"Karao"}, ["kyk"] = {"Kamayo"}, ["kyl"] = {"Kalapuya"}, ["kym"] = {"Kpatili"}, ["kyn"] = {"Northern Binukidnon"}, ["kyo"] = {"Kelon"}, ["kyp"] = {"Kang"}, ["kyq"] = {"Kenga"}, ["kyr"] = {"Kuruáya"}, ["kys"] = {"Baram Kayan"}, ["kyt"] = {"Kayagar"}, ["kyu"] = {"Western Kayah"}, ["kyv"] = {"Kayort"}, ["kyw"] = {"Kudmali"}, ["kyx"] = {"Rapoisi"}, ["kyy"] = {"Kambaira"}, ["kyz"] = {"Kayabí"}, ["kza"] = {"Western Karaboro"}, ["kzb"] = {"Kaibobo"}, ["kzc"] = {"Bondoukou Kulango"}, ["kzd"] = {"Kadai"}, ["kze"] = {"Kosena"}, ["kzf"] = {"Da'a Kaili"}, ["kzg"] = {"Kikai"}, ["kzi"] = {"Kelabit"}, ["kzk"] = {"Kazukuru"}, ["kzl"] = {"Kayeli"}, ["kzm"] = {"Kais"}, ["kzn"] = {"Kokola"}, ["kzo"] = {"Kaningi"}, ["kzp"] = {"Kaidipang"}, ["kzq"] = {"Kaike"}, ["kzr"] = {"Karang"}, ["kzs"] = {"Sugut Dusun"}, ["kzu"] = {"Kayupulau"}, ["kzv"] = {"Komyandaret"}, ["kzw"] = {"Karirí-Xocó"}, ["kzx"] = {"Kamarian"}, ["kzy"] = {"Kango (Tshopo District)"}, ["kzz"] = {"Kalabra"}, ["laa"] = {"Southern Subanen"}, ["lab"] = {"Linear A"}, ["lac"] = {"Lacandon"}, ["lad"] = {"Ladino"}, ["lae"] = {"Pattani"}, ["laf"] = {"Lafofa"}, ["lag"] = {"Langi"}, ["lah"] = {"Lahnda"}, ["lai"] = {"Lambya"}, ["laj"] = {"Lango (Uganda)"}, ["lal"] = {"Lalia"}, ["lam"] = {"Lamba"}, ["lan"] = {"Laru"}, ["lap"] = {"Laka (Chad)"}, ["laq"] = {"Qabiao"}, ["lar"] = {"Larteh"}, ["las"] = {"Lama (Togo)"}, ["lau"] = {"Laba"}, ["law"] = {"Lauje"}, ["lax"] = {"Tiwa"}, ["lay"] = {"Lama Bai"}, ["laz"] = {"Aribwatsa"}, ["lbb"] = {"Label"}, ["lbc"] = {"Lakkia"}, ["lbe"] = {"Lak"}, ["lbf"] = {"Tinani"}, ["lbg"] = {"Laopang"}, ["lbi"] = {"La'bi"}, ["lbj"] = {"Ladakhi"}, ["lbk"] = {"Central Bontok"}, ["lbl"] = {"Libon Bikol"}, ["lbm"] = {"Lodhi"}, ["lbn"] = {"Rmeet"}, ["lbo"] = {"Laven"}, ["lbq"] = {"Wampar"}, ["lbr"] = {"Lohorung"}, ["lbs"] = {"Libyan Sign Language"}, ["lbt"] = {"Lachi"}, ["lbu"] = {"Labu"}, ["lbv"] = {"Lavatbura-Lamusong"}, ["lbw"] = {"Tolaki"}, ["lbx"] = {"Lawangan"}, ["lby"] = {"Lamalama", "Lamu-Lamu"}, ["lbz"] = {"Lardil"}, ["lcc"] = {"Legenyem"}, ["lcd"] = {"Lola"}, ["lce"] = {"Loncong", "Sekak"}, ["lcf"] = {"Lubu"}, ["lch"] = {"Luchazi"}, ["lcl"] = {"Lisela"}, ["lcm"] = {"Tungag"}, ["lcp"] = {"Western Lawa"}, ["lcq"] = {"Luhu"}, ["lcs"] = {"Lisabata-Nuniali"}, ["lda"] = {"Kla-Dan"}, ["ldb"] = {"Dũya"}, ["ldd"] = {"Luri"}, ["ldg"] = {"Lenyima"}, ["ldh"] = {"Lamja-Dengsa-Tola"}, ["ldi"] = {"Laari"}, ["ldj"] = {"Lemoro"}, ["ldk"] = {"Leelau"}, ["ldl"] = {"Kaan"}, ["ldm"] = {"Landoma"}, ["ldn"] = {"Láadan"}, ["ldo"] = {"Loo"}, ["ldp"] = {"Tso"}, ["ldq"] = {"Lufu"}, ["lea"] = {"Lega-Shabunda"}, ["leb"] = {"Lala-Bisa"}, ["lec"] = {"Leco"}, ["led"] = {"Lendu"}, ["lee"] = {"Lyélé"}, ["lef"] = {"Lelemi"}, ["leh"] = {"Lenje"}, ["lei"] = {"Lemio"}, ["lej"] = {"Lengola"}, ["lek"] = {"Leipon"}, ["lel"] = {"Lele (Democratic Republic of Congo)"}, ["lem"] = {"Nomaande"}, ["len"] = {"Lenca"}, ["leo"] = {"Leti (Cameroon)"}, ["lep"] = {"Lepcha"}, ["leq"] = {"Lembena"}, ["ler"] = {"Lenkau"}, ["les"] = {"Lese"}, ["let"] = {"Lesing-Gelimi", "Amio-Gelimi"}, ["leu"] = {"Kara (Papua New Guinea)"}, ["lev"] = {"Lamma"}, ["lew"] = {"Ledo Kaili"}, ["lex"] = {"Luang"}, ["ley"] = {"Lemolang"}, ["lez"] = {"Lezghian"}, ["lfa"] = {"Lefa"}, ["lfn"] = {"Lingua Franca Nova"}, ["lga"] = {"Lungga"}, ["lgb"] = {"Laghu"}, ["lgg"] = {"Lugbara"}, ["lgh"] = {"Laghuu"}, ["lgi"] = {"Lengilu"}, ["lgk"] = {"Lingarak", "Neverver"}, ["lgl"] = {"Wala"}, ["lgm"] = {"Lega-Mwenga"}, ["lgn"] = {"T'apo", "Opuuo"}, ["lgo"] = {"Lango (South Sudan)"}, ["lgq"] = {"Logba"}, ["lgr"] = {"Lengo"}, ["lgt"] = {"Pahi"}, ["lgu"] = {"Longgu"}, ["lgz"] = {"Ligenza"}, ["lha"] = {"Laha (Viet Nam)"}, ["lhh"] = {"Laha (Indonesia)"}, ["lhi"] = {"Lahu Shi"}, ["lhl"] = {"Lahul Lohar"}, ["lhm"] = {"Lhomi"}, ["lhn"] = {"Lahanan"}, ["lhp"] = {"Lhokpu"}, ["lhs"] = {"Mlahsö"}, ["lht"] = {"Lo-Toga"}, ["lhu"] = {"Lahu"}, ["lia"] = {"West-Central Limba"}, ["lib"] = {"Likum"}, ["lic"] = {"Hlai"}, ["lid"] = {"Nyindrou"}, ["lie"] = {"Likila"}, ["lif"] = {"Limbu"}, ["lig"] = {"Ligbi"}, ["lih"] = {"Lihir"}, ["lij"] = {"Ligurian"}, ["lik"] = {"Lika"}, ["lil"] = {"Lillooet"}, ["lio"] = {"Liki"}, ["lip"] = {"Sekpele"}, ["liq"] = {"Libido"}, ["lir"] = {"Liberian English"}, ["lis"] = {"Lisu"}, ["liu"] = {"Logorik"}, ["liv"] = {"Liv"}, ["liw"] = {"Col"}, ["lix"] = {"Liabuku"}, ["liy"] = {"Banda-Bambari"}, ["liz"] = {"Libinza"}, ["lja"] = {"Golpa"}, ["lje"] = {"Rampi"}, ["lji"] = {"Laiyolo"}, ["ljl"] = {"Li'o"}, ["ljp"] = {"Lampung Api"}, ["ljw"] = {"Yirandali"}, ["ljx"] = {"Yuru"}, ["lka"] = {"Lakalei"}, ["lkb"] = {"Kabras", "Lukabaras"}, ["lkc"] = {"Kucong"}, ["lkd"] = {"Lakondê"}, ["lke"] = {"Kenyi"}, ["lkh"] = {"Lakha"}, ["lki"] = {"Laki"}, ["lkj"] = {"Remun"}, ["lkl"] = {"Laeko-Libuat"}, ["lkm"] = {"Kalaamaya"}, ["lkn"] = {"Lakon", "Vure"}, ["lko"] = {"Khayo", "Olukhayo"}, ["lkr"] = {"Päri"}, ["lks"] = {"Kisa", "Olushisa"}, ["lkt"] = {"Lakota"}, ["lku"] = {"Kungkari"}, ["lky"] = {"Lokoya"}, ["lla"] = {"Lala-Roba"}, ["llb"] = {"Lolo"}, ["llc"] = {"Lele (Guinea)"}, ["lld"] = {"Ladin"}, ["lle"] = {"Lele (Papua New Guinea)"}, ["llf"] = {"Hermit"}, ["llg"] = {"Lole"}, ["llh"] = {"Lamu"}, ["lli"] = {"Teke-Laali"}, ["llj"] = {"Ladji Ladji"}, ["llk"] = {"Lelak"}, ["lll"] = {"Lilau"}, ["llm"] = {"Lasalimu"}, ["lln"] = {"Lele (Chad)"}, ["llp"] = {"North Efate"}, ["llq"] = {"Lolak"}, ["lls"] = {"Lithuanian Sign Language"}, ["llu"] = {"Lau"}, ["llx"] = {"Lauan"}, ["lma"] = {"East Limba"}, ["lmb"] = {"Merei"}, ["lmc"] = {"Limilngan"}, ["lmd"] = {"Lumun"}, ["lme"] = {"Pévé"}, ["lmf"] = {"South Lembata"}, ["lmg"] = {"Lamogai"}, ["lmh"] = {"Lambichhong"}, ["lmi"] = {"Lombi"}, ["lmj"] = {"West Lembata"}, ["lmk"] = {"Lamkang"}, ["lml"] = {"Hano"}, ["lmn"] = {"Lambadi"}, ["lmo"] = {"Lombard"}, ["lmp"] = {"Limbum"}, ["lmq"] = {"Lamatuka"}, ["lmr"] = {"Lamalera"}, ["lmu"] = {"Lamenu"}, ["lmv"] = {"Lomaiviti"}, ["lmw"] = {"Lake Miwok"}, ["lmx"] = {"Laimbue"}, ["lmy"] = {"Lamboya"}, ["lna"] = {"Langbashe"}, ["lnb"] = {"Mbalanhu"}, ["lnd"] = {"Lundayeh", "Lun Bawang"}, ["lng"] = {"Langobardic"}, ["lnh"] = {"Lanoh"}, ["lni"] = {"Daantanai'"}, ["lnj"] = {"Leningitij"}, ["lnl"] = {"South Central Banda"}, ["lnm"] = {"Langam"}, ["lnn"] = {"Lorediakarkar"}, ["lns"] = {"Lamnso'"}, ["lnu"] = {"Longuda"}, ["lnw"] = {"Lanima"}, ["lnz"] = {"Lonzo"}, ["loa"] = {"Loloda"}, ["lob"] = {"Lobi"}, ["loc"] = {"Inonhan"}, ["loe"] = {"Saluan"}, ["lof"] = {"Logol"}, ["log"] = {"Logo"}, ["loh"] = {"Narim"}, ["loi"] = {"Loma (Côte d'Ivoire)"}, ["loj"] = {"Lou"}, ["lok"] = {"Loko"}, ["lol"] = {"Mongo"}, ["lom"] = {"Loma (Liberia)"}, ["lon"] = {"Malawi Lomwe"}, ["loo"] = {"Lombo"}, ["lop"] = {"Lopa"}, ["loq"] = {"Lobala"}, ["lor"] = {"Téén"}, ["los"] = {"Loniu"}, ["lot"] = {"Otuho"}, ["lou"] = {"Louisiana Creole"}, ["lov"] = {"Lopi"}, ["low"] = {"Tampias Lobu"}, ["lox"] = {"Loun"}, ["loy"] = {"Loke"}, ["loz"] = {"Lozi"}, ["lpa"] = {"Lelepa"}, ["lpe"] = {"Lepki"}, ["lpn"] = {"Long Phuri Naga"}, ["lpo"] = {"Lipo"}, ["lpx"] = {"Lopit"}, ["lqr"] = {"Logir"}, ["lra"] = {"Rara Bakati'"}, ["lrc"] = {"Northern Luri"}, ["lre"] = {"Laurentian"}, ["lrg"] = {"Laragia"}, ["lri"] = {"Marachi", "Olumarachi"}, ["lrk"] = {"Loarki"}, ["lrl"] = {"Lari"}, ["lrm"] = {"Marama", "Olumarama"}, ["lrn"] = {"Lorang"}, ["lro"] = {"Laro"}, ["lrr"] = {"Southern Yamphu"}, ["lrt"] = {"Larantuka Malay"}, ["lrv"] = {"Larevat"}, ["lrz"] = {"Lemerig"}, ["lsa"] = {"Lasgerdi"}, ["lsb"] = {"Burundian Sign Language", "Langue des Signes Burundaise"}, ["lsc"] = {"Albarradas Sign Language", "Lengua de señas Albarradas"}, ["lsd"] = {"Lishana Deni"}, ["lse"] = {"Lusengo"}, ["lsh"] = {"Lish"}, ["lsi"] = {"Lashi"}, ["lsl"] = {"Latvian Sign Language"}, ["lsm"] = {"Saamia", "Olusamia"}, ["lsn"] = {"Tibetan Sign Language"}, ["lso"] = {"Laos Sign Language"}, ["lsp"] = {"Panamanian Sign Language", "Lengua de Señas Panameñas"}, ["lsr"] = {"Aruop"}, ["lss"] = {"Lasi"}, ["lst"] = {"Trinidad and Tobago Sign Language"}, ["lsv"] = {"Sivia Sign Language"}, ["lsw"] = {"Seychelles Sign Language", "Lalang Siny Seselwa", "Langue des Signes Seychelloise"}, ["lsy"] = {"Mauritian Sign Language"}, ["ltc"] = {"Late Middle Chinese"}, ["ltg"] = {"Latgalian"}, ["lth"] = {"Thur"}, ["lti"] = {"Leti (Indonesia)"}, ["ltn"] = {"Latundê"}, ["lto"] = {"Tsotso", "Olutsotso"}, ["lts"] = {"Tachoni", "Lutachoni"}, ["ltu"] = {"Latu"}, ["lua"] = {"Luba-Lulua"}, ["luc"] = {"Aringa"}, ["lud"] = {"Ludian"}, ["lue"] = {"Luvale"}, ["luf"] = {"Laua"}, ["lui"] = {"Luiseno"}, ["luj"] = {"Luna"}, ["luk"] = {"Lunanakha"}, ["lul"] = {"Olu'bo"}, ["lum"] = {"Luimbi"}, ["lun"] = {"Lunda"}, ["luo"] = {"Luo (Kenya and Tanzania)", "Dholuo"}, ["lup"] = {"Lumbu"}, ["luq"] = {"Lucumi"}, ["lur"] = {"Laura"}, ["lus"] = {"Lushai"}, ["lut"] = {"Lushootseed"}, ["luu"] = {"Lumba-Yakkha"}, ["luv"] = {"Luwati"}, ["luw"] = {"Luo (Cameroon)"}, ["luy"] = {"Luyia", "Oluluyia"}, ["luz"] = {"Southern Luri"}, ["lva"] = {"Maku'a"}, ["lvi"] = {"Lavi"}, ["lvk"] = {"Lavukaleve"}, ["lvs"] = {"Standard Latvian"}, ["lvu"] = {"Levuka"}, ["lwa"] = {"Lwalu"}, ["lwe"] = {"Lewo Eleng"}, ["lwg"] = {"Wanga", "Oluwanga"}, ["lwh"] = {"White Lachi"}, ["lwl"] = {"Eastern Lawa"}, ["lwm"] = {"Laomian"}, ["lwo"] = {"Luwo"}, ["lws"] = {"Malawian Sign Language"}, ["lwt"] = {"Lewotobi"}, ["lwu"] = {"Lawu"}, ["lww"] = {"Lewo"}, ["lxm"] = {"Lakurumau"}, ["lya"] = {"Layakha"}, ["lyg"] = {"Lyngngam"}, ["lyn"] = {"Luyana"}, ["lzh"] = {"Literary Chinese"}, ["lzl"] = {"Litzlitz"}, ["lzn"] = {"Leinong Naga"}, ["lzz"] = {"Laz"}, ["maa"] = {"San Jerónimo Tecóatl Mazatec"}, ["mab"] = {"Yutanduchi Mixtec"}, ["mad"] = {"Madurese"}, ["mae"] = {"Bo-Rukul"}, ["maf"] = {"Mafa"}, ["mag"] = {"Magahi"}, ["mai"] = {"Maithili"}, ["maj"] = {"Jalapa De Díaz Mazatec"}, ["mak"] = {"Makasar"}, ["mam"] = {"Mam"}, ["man"] = {"Mandingo", "Manding"}, ["map"] = {"Austronesian languages"}, ["maq"] = {"Chiquihuitlán Mazatec"}, ["mas"] = {"Masai"}, ["mat"] = {"San Francisco Matlatzinca"}, ["mau"] = {"Huautla Mazatec"}, ["mav"] = {"Sateré-Mawé"}, ["maw"] = {"Mampruli"}, ["max"] = {"North Moluccan Malay"}, ["maz"] = {"Central Mazahua"}, ["mba"] = {"Higaonon"}, ["mbb"] = {"Western Bukidnon Manobo"}, ["mbc"] = {"Macushi"}, ["mbd"] = {"Dibabawon Manobo"}, ["mbe"] = {"Molale"}, ["mbf"] = {"Baba Malay"}, ["mbh"] = {"Mangseng"}, ["mbi"] = {"Ilianen Manobo"}, ["mbj"] = {"Nadëb"}, ["mbk"] = {"Malol"}, ["mbl"] = {"Maxakalí"}, ["mbm"] = {"Ombamba"}, ["mbn"] = {"Macaguán"}, ["mbo"] = {"Mbo (Cameroon)"}, ["mbp"] = {"Malayo"}, ["mbq"] = {"Maisin"}, ["mbr"] = {"Nukak Makú"}, ["mbs"] = {"Sarangani Manobo"}, ["mbt"] = {"Matigsalug Manobo"}, ["mbu"] = {"Mbula-Bwazza"}, ["mbv"] = {"Mbulungish"}, ["mbw"] = {"Maring"}, ["mbx"] = {"Mari (East Sepik Province)"}, ["mby"] = {"Memoni"}, ["mbz"] = {"Amoltepec Mixtec"}, ["mca"] = {"Maca"}, ["mcb"] = {"Machiguenga"}, ["mcc"] = {"Bitur"}, ["mcd"] = {"Sharanahua"}, ["mce"] = {"Itundujia Mixtec"}, ["mcf"] = {"Matsés"}, ["mcg"] = {"Mapoyo"}, ["mch"] = {"Maquiritari"}, ["mci"] = {"Mese"}, ["mcj"] = {"Mvanip"}, ["mck"] = {"Mbunda"}, ["mcl"] = {"Macaguaje"}, ["mcm"] = {"Malaccan Creole Portuguese"}, ["mcn"] = {"Masana"}, ["mco"] = {"Coatlán Mixe"}, ["mcp"] = {"Makaa"}, ["mcq"] = {"Ese"}, ["mcr"] = {"Menya"}, ["mcs"] = {"Mambai"}, ["mct"] = {"Mengisa"}, ["mcu"] = {"Cameroon Mambila"}, ["mcv"] = {"Minanibai"}, ["mcw"] = {"Mawa (Chad)"}, ["mcx"] = {"Mpiemo"}, ["mcy"] = {"South Watut"}, ["mcz"] = {"Mawan"}, ["mda"] = {"Mada (Nigeria)"}, ["mdb"] = {"Morigi"}, ["mdc"] = {"Male (Papua New Guinea)"}, ["mdd"] = {"Mbum"}, ["mde"] = {"Maba (Chad)"}, ["mdf"] = {"Moksha"}, ["mdg"] = {"Massalat"}, ["mdh"] = {"Maguindanaon"}, ["mdi"] = {"Mamvu"}, ["mdj"] = {"Mangbetu"}, ["mdk"] = {"Mangbutu"}, ["mdl"] = {"Maltese Sign Language"}, ["mdm"] = {"Mayogo"}, ["mdn"] = {"Mbati"}, ["mdp"] = {"Mbala"}, ["mdq"] = {"Mbole"}, ["mdr"] = {"Mandar"}, ["mds"] = {"Maria (Papua New Guinea)"}, ["mdt"] = {"Mbere"}, ["mdu"] = {"Mboko"}, ["mdv"] = {"Santa Lucía Monteverde Mixtec"}, ["mdw"] = {"Mbosi"}, ["mdx"] = {"Dizin"}, ["mdy"] = {"Male (Ethiopia)"}, ["mdz"] = {"Suruí Do Pará"}, ["mea"] = {"Menka"}, ["meb"] = {"Ikobi"}, ["mec"] = {"Marra"}, ["med"] = {"Melpa"}, ["mee"] = {"Mengen"}, ["mef"] = {"Megam"}, ["meh"] = {"Southwestern Tlaxiaco Mixtec"}, ["mei"] = {"Midob"}, ["mej"] = {"Meyah"}, ["mek"] = {"Mekeo"}, ["mel"] = {"Central Melanau"}, ["mem"] = {"Mangala"}, ["men"] = {"Mende (Sierra Leone)"}, ["meo"] = {"Kedah Malay"}, ["mep"] = {"Miriwoong"}, ["meq"] = {"Merey"}, ["mer"] = {"Meru"}, ["mes"] = {"Masmaje"}, ["met"] = {"Mato"}, ["meu"] = {"Motu"}, ["mev"] = {"Mano"}, ["mew"] = {"Maaka"}, ["mey"] = {"Hassaniyya"}, ["mez"] = {"Menominee"}, ["mfa"] = {"Pattani Malay"}, ["mfb"] = {"Bangka"}, ["mfc"] = {"Mba"}, ["mfd"] = {"Mendankwe-Nkwen"}, ["mfe"] = {"Morisyen"}, ["mff"] = {"Naki"}, ["mfg"] = {"Mogofin"}, ["mfh"] = {"Matal"}, ["mfi"] = {"Wandala"}, ["mfj"] = {"Mefele"}, ["mfk"] = {"North Mofu"}, ["mfl"] = {"Putai"}, ["mfm"] = {"Marghi South"}, ["mfn"] = {"Cross River Mbembe"}, ["mfo"] = {"Mbe"}, ["mfp"] = {"Makassar Malay"}, ["mfq"] = {"Moba"}, ["mfr"] = {"Marrithiyel"}, ["mfs"] = {"Mexican Sign Language"}, ["mft"] = {"Mokerang"}, ["mfu"] = {"Mbwela"}, ["mfv"] = {"Mandjak"}, ["mfw"] = {"Mulaha"}, ["mfx"] = {"Melo"}, ["mfy"] = {"Mayo"}, ["mfz"] = {"Mabaan"}, ["mga"] = {"Middle Irish (900-1200)"}, ["mgb"] = {"Mararit"}, ["mgc"] = {"Morokodo"}, ["mgd"] = {"Moru"}, ["mge"] = {"Mango"}, ["mgf"] = {"Maklew"}, ["mgg"] = {"Mpumpong"}, ["mgh"] = {"Makhuwa-Meetto"}, ["mgi"] = {"Lijili"}, ["mgj"] = {"Abureni"}, ["mgk"] = {"Mawes"}, ["mgl"] = {"Maleu-Kilenge"}, ["mgm"] = {"Mambae"}, ["mgn"] = {"Mbangi"}, ["mgo"] = {"Meta'"}, ["mgp"] = {"Eastern Magar"}, ["mgq"] = {"Malila"}, ["mgr"] = {"Mambwe-Lungu"}, ["mgs"] = {"Manda (Tanzania)"}, ["mgt"] = {"Mongol"}, ["mgu"] = {"Mailu"}, ["mgv"] = {"Matengo"}, ["mgw"] = {"Matumbi"}, ["mgy"] = {"Mbunga"}, ["mgz"] = {"Mbugwe"}, ["mha"] = {"Manda (India)"}, ["mhb"] = {"Mahongwe"}, ["mhc"] = {"Mocho"}, ["mhd"] = {"Mbugu"}, ["mhe"] = {"Besisi", "Mah Meri"}, ["mhf"] = {"Mamaa"}, ["mhg"] = {"Margu"}, ["mhi"] = {"Ma'di"}, ["mhj"] = {"Mogholi"}, ["mhk"] = {"Mungaka"}, ["mhl"] = {"Mauwake"}, ["mhm"] = {"Makhuwa-Moniga"}, ["mhn"] = {"Mócheno"}, ["mho"] = {"Mashi (Zambia)"}, ["mhp"] = {"Balinese Malay"}, ["mhq"] = {"Mandan"}, ["mhr"] = {"Eastern Mari"}, ["mhs"] = {"Buru (Indonesia)"}, ["mht"] = {"Mandahuaca"}, ["mhu"] = {"Digaro-Mishmi", "Darang Deng"}, ["mhw"] = {"Mbukushu"}, ["mhx"] = {"Maru", "Lhaovo"}, ["mhy"] = {"Ma'anyan"}, ["mhz"] = {"Mor (Mor Islands)"}, ["mia"] = {"Miami"}, ["mib"] = {"Atatláhuca Mixtec"}, ["mic"] = {"Mi'kmaq", "Micmac"}, ["mid"] = {"Mandaic"}, ["mie"] = {"Ocotepec Mixtec"}, ["mif"] = {"Mofu-Gudur"}, ["mig"] = {"San Miguel El Grande Mixtec"}, ["mih"] = {"Chayuco Mixtec"}, ["mii"] = {"Chigmecatitlán Mixtec"}, ["mij"] = {"Abar", "Mungbam"}, ["mik"] = {"Mikasuki"}, ["mil"] = {"Peñoles Mixtec"}, ["mim"] = {"Alacatlatzala Mixtec"}, ["min"] = {"Minangkabau"}, ["mio"] = {"Pinotepa Nacional Mixtec"}, ["mip"] = {"Apasco-Apoala Mixtec"}, ["miq"] = {"Mískito"}, ["mir"] = {"Isthmus Mixe"}, ["mis"] = {"Uncoded languages"}, ["mit"] = {"Southern Puebla Mixtec"}, ["miu"] = {"Cacaloxtepec Mixtec"}, ["miw"] = {"Akoye"}, ["mix"] = {"Mixtepec Mixtec"}, ["miy"] = {"Ayutla Mixtec"}, ["miz"] = {"Coatzospan Mixtec"}, ["mjb"] = {"Makalero"}, ["mjc"] = {"San Juan Colorado Mixtec"}, ["mjd"] = {"Northwest Maidu"}, ["mje"] = {"Muskum"}, ["mjg"] = {"Tu"}, ["mjh"] = {"Mwera (Nyasa)"}, ["mji"] = {"Kim Mun"}, ["mjj"] = {"Mawak"}, ["mjk"] = {"Matukar"}, ["mjl"] = {"Mandeali"}, ["mjm"] = {"Medebur"}, ["mjn"] = {"Ma (Papua New Guinea)"}, ["mjo"] = {"Malankuravan"}, ["mjp"] = {"Malapandaram"}, ["mjq"] = {"Malaryan"}, ["mjr"] = {"Malavedan"}, ["mjs"] = {"Miship"}, ["mjt"] = {"Sauria Paharia"}, ["mju"] = {"Manna-Dora"}, ["mjv"] = {"Mannan"}, ["mjw"] = {"Karbi"}, ["mjx"] = {"Mahali"}, ["mjy"] = {"Mahican"}, ["mjz"] = {"Majhi"}, ["mka"] = {"Mbre"}, ["mkb"] = {"Mal Paharia"}, ["mkc"] = {"Siliput"}, ["mke"] = {"Mawchi"}, ["mkf"] = {"Miya"}, ["mkg"] = {"Mak (China)"}, ["mkh"] = {"Mon-Khmer languages"}, ["mki"] = {"Dhatki"}, ["mkj"] = {"Mokilese"}, ["mkk"] = {"Byep"}, ["mkl"] = {"Mokole"}, ["mkm"] = {"Moklen"}, ["mkn"] = {"Kupang Malay"}, ["mko"] = {"Mingang Doso"}, ["mkp"] = {"Moikodi"}, ["mkq"] = {"Bay Miwok"}, ["mkr"] = {"Malas"}, ["mks"] = {"Silacayoapan Mixtec"}, ["mkt"] = {"Vamale"}, ["mku"] = {"Konyanka Maninka"}, ["mkv"] = {"Mafea"}, ["mkw"] = {"Kituba (Congo)"}, ["mkx"] = {"Kinamiging Manobo"}, ["mky"] = {"East Makian"}, ["mkz"] = {"Makasae"}, ["mla"] = {"Malo"}, ["mlb"] = {"Mbule"}, ["mlc"] = {"Cao Lan"}, ["mle"] = {"Manambu"}, ["mlf"] = {"Mal"}, ["mlh"] = {"Mape"}, ["mli"] = {"Malimpung"}, ["mlj"] = {"Miltu"}, ["mlk"] = {"Ilwana", "Kiwilwana"}, ["mll"] = {"Malua Bay"}, ["mlm"] = {"Mulam"}, ["mln"] = {"Malango"}, ["mlo"] = {"Mlomp"}, ["mlp"] = {"Bargam"}, ["mlq"] = {"Western Maninkakan"}, ["mlr"] = {"Vame"}, ["mls"] = {"Masalit"}, ["mlu"] = {"To'abaita"}, ["mlv"] = {"Motlav", "Mwotlap"}, ["mlw"] = {"Moloko"}, ["mlx"] = {"Malfaxal", "Naha'ai"}, ["mlz"] = {"Malaynon"}, ["mma"] = {"Mama"}, ["mmb"] = {"Momina"}, ["mmc"] = {"Michoacán Mazahua"}, ["mmd"] = {"Maonan"}, ["mme"] = {"Mae"}, ["mmf"] = {"Mundat"}, ["mmg"] = {"North Ambrym"}, ["mmh"] = {"Mehináku"}, ["mmi"] = {"Musar"}, ["mmj"] = {"Majhwar"}, ["mmk"] = {"Mukha-Dora"}, ["mml"] = {"Man Met"}, ["mmm"] = {"Maii"}, ["mmn"] = {"Mamanwa"}, ["mmo"] = {"Mangga Buang"}, ["mmp"] = {"Siawi"}, ["mmq"] = {"Musak"}, ["mmr"] = {"Western Xiangxi Miao"}, ["mmt"] = {"Malalamai"}, ["mmu"] = {"Mmaala"}, ["mmv"] = {"Miriti"}, ["mmw"] = {"Emae"}, ["mmx"] = {"Madak"}, ["mmy"] = {"Migaama"}, ["mmz"] = {"Mabaale"}, ["mna"] = {"Mbula"}, ["mnb"] = {"Muna"}, ["mnc"] = {"Manchu"}, ["mnd"] = {"Mondé"}, ["mne"] = {"Naba"}, ["mnf"] = {"Mundani"}, ["mng"] = {"Eastern Mnong"}, ["mnh"] = {"Mono (Democratic Republic of Congo)"}, ["mni"] = {"Manipuri"}, ["mnj"] = {"Munji"}, ["mnk"] = {"Mandinka"}, ["mnl"] = {"Tiale"}, ["mnm"] = {"Mapena"}, ["mnn"] = {"Southern Mnong"}, ["mno"] = {"Manobo languages"}, ["mnp"] = {"Min Bei Chinese"}, ["mnq"] = {"Minriq"}, ["mnr"] = {"Mono (USA)"}, ["mns"] = {"Mansi"}, ["mnu"] = {"Mer"}, ["mnv"] = {"Rennell-Bellona"}, ["mnw"] = {"Mon"}, ["mnx"] = {"Manikion"}, ["mny"] = {"Manyawa"}, ["mnz"] = {"Moni"}, ["moa"] = {"Mwan"}, ["moc"] = {"Mocoví"}, ["mod"] = {"Mobilian"}, ["moe"] = {"Innu", "Montagnais"}, ["mog"] = {"Mongondow"}, ["moh"] = {"Mohawk"}, ["moi"] = {"Mboi"}, ["moj"] = {"Monzombo"}, ["mok"] = {"Morori"}, ["mom"] = {"Mangue"}, ["moo"] = {"Monom"}, ["mop"] = {"Mopán Maya"}, ["moq"] = {"Mor (Bomberai Peninsula)"}, ["mor"] = {"Moro"}, ["mos"] = {"Mossi"}, ["mot"] = {"Barí"}, ["mou"] = {"Mogum"}, ["mov"] = {"Mohave"}, ["mow"] = {"Moi (Congo)"}, ["mox"] = {"Molima"}, ["moy"] = {"Shekkacho"}, ["moz"] = {"Mukulu", "Gergiko"}, ["mpa"] = {"Mpoto"}, ["mpb"] = {"Malak Malak", "Mullukmulluk"}, ["mpc"] = {"Mangarrayi"}, ["mpd"] = {"Machinere"}, ["mpe"] = {"Majang"}, ["mpg"] = {"Marba"}, ["mph"] = {"Maung"}, ["mpi"] = {"Mpade"}, ["mpj"] = {"Martu Wangka", "Wangkajunga"}, ["mpk"] = {"Mbara (Chad)"}, ["mpl"] = {"Middle Watut"}, ["mpm"] = {"Yosondúa Mixtec"}, ["mpn"] = {"Mindiri"}, ["mpo"] = {"Miu"}, ["mpp"] = {"Migabac"}, ["mpq"] = {"Matís"}, ["mpr"] = {"Vangunu"}, ["mps"] = {"Dadibi"}, ["mpt"] = {"Mian"}, ["mpu"] = {"Makuráp"}, ["mpv"] = {"Mungkip"}, ["mpw"] = {"Mapidian"}, ["mpx"] = {"Misima-Panaeati"}, ["mpy"] = {"Mapia"}, ["mpz"] = {"Mpi"}, ["mqa"] = {"Maba (Indonesia)"}, ["mqb"] = {"Mbuko"}, ["mqc"] = {"Mangole"}, ["mqe"] = {"Matepi"}, ["mqf"] = {"Momuna"}, ["mqg"] = {"Kota Bangun Kutai Malay"}, ["mqh"] = {"Tlazoyaltepec Mixtec"}, ["mqi"] = {"Mariri"}, ["mqj"] = {"Mamasa"}, ["mqk"] = {"Rajah Kabunsuwan Manobo"}, ["mql"] = {"Mbelime"}, ["mqm"] = {"South Marquesan"}, ["mqn"] = {"Moronene"}, ["mqo"] = {"Modole"}, ["mqp"] = {"Manipa"}, ["mqq"] = {"Minokok"}, ["mqr"] = {"Mander"}, ["mqs"] = {"West Makian"}, ["mqt"] = {"Mok"}, ["mqu"] = {"Mandari"}, ["mqv"] = {"Mosimo"}, ["mqw"] = {"Murupi"}, ["mqx"] = {"Mamuju"}, ["mqy"] = {"Manggarai"}, ["mqz"] = {"Pano"}, ["mra"] = {"Mlabri"}, ["mrb"] = {"Marino"}, ["mrc"] = {"Maricopa"}, ["mrd"] = {"Western Magar"}, ["mre"] = {"Martha's Vineyard Sign Language"}, ["mrf"] = {"Elseng"}, ["mrg"] = {"Mising"}, ["mrh"] = {"Mara Chin"}, ["mrj"] = {"Western Mari"}, ["mrk"] = {"Hmwaveke"}, ["mrl"] = {"Mortlockese"}, ["mrm"] = {"Merlav", "Mwerlap"}, ["mrn"] = {"Cheke Holo"}, ["mro"] = {"Mru"}, ["mrp"] = {"Morouas"}, ["mrq"] = {"North Marquesan"}, ["mrr"] = {"Maria (India)"}, ["mrs"] = {"Maragus"}, ["mrt"] = {"Marghi Central"}, ["mru"] = {"Mono (Cameroon)"}, ["mrv"] = {"Mangareva"}, ["mrw"] = {"Maranao"}, ["mrx"] = {"Maremgi", "Dineor"}, ["mry"] = {"Mandaya"}, ["mrz"] = {"Marind"}, ["msb"] = {"Masbatenyo"}, ["msc"] = {"Sankaran Maninka"}, ["msd"] = {"Yucatec Maya Sign Language"}, ["mse"] = {"Musey"}, ["msf"] = {"Mekwei"}, ["msg"] = {"Moraid"}, ["msh"] = {"Masikoro Malagasy"}, ["msi"] = {"Sabah Malay"}, ["msj"] = {"Ma (Democratic Republic of Congo)"}, ["msk"] = {"Mansaka"}, ["msl"] = {"Molof", "Poule"}, ["msm"] = {"Agusan Manobo"}, ["msn"] = {"Vurës"}, ["mso"] = {"Mombum"}, ["msp"] = {"Maritsauá"}, ["msq"] = {"Caac"}, ["msr"] = {"Mongolian Sign Language"}, ["mss"] = {"West Masela"}, ["msu"] = {"Musom"}, ["msv"] = {"Maslam"}, ["msw"] = {"Mansoanka"}, ["msx"] = {"Moresada"}, ["msy"] = {"Aruamu"}, ["msz"] = {"Momare"}, ["mta"] = {"Cotabato Manobo"}, ["mtb"] = {"Anyin Morofo"}, ["mtc"] = {"Munit"}, ["mtd"] = {"Mualang"}, ["mte"] = {"Mono (Solomon Islands)"}, ["mtf"] = {"Murik (Papua New Guinea)"}, ["mtg"] = {"Una"}, ["mth"] = {"Munggui"}, ["mti"] = {"Maiwa (Papua New Guinea)"}, ["mtj"] = {"Moskona"}, ["mtk"] = {"Mbe'"}, ["mtl"] = {"Montol"}, ["mtm"] = {"Mator"}, ["mtn"] = {"Matagalpa"}, ["mto"] = {"Totontepec Mixe"}, ["mtp"] = {"Wichí Lhamtés Nocten"}, ["mtq"] = {"Muong"}, ["mtr"] = {"Mewari"}, ["mts"] = {"Yora"}, ["mtt"] = {"Mota"}, ["mtu"] = {"Tututepec Mixtec"}, ["mtv"] = {"Asaro'o"}, ["mtw"] = {"Southern Binukidnon"}, ["mtx"] = {"Tidaá Mixtec"}, ["mty"] = {"Nabi"}, ["mua"] = {"Mundang"}, ["mub"] = {"Mubi"}, ["muc"] = {"Ajumbu"}, ["mud"] = {"Mednyj Aleut"}, ["mue"] = {"Media Lengua"}, ["mug"] = {"Musgu"}, ["muh"] = {"Mündü"}, ["mui"] = {"Musi"}, ["muj"] = {"Mabire"}, ["muk"] = {"Mugom"}, ["mul"] = {"Multiple languages"}, ["mum"] = {"Maiwala"}, ["mun"] = {"Munda languages"}, ["muo"] = {"Nyong"}, ["mup"] = {"Malvi"}, ["muq"] = {"Eastern Xiangxi Miao"}, ["mur"] = {"Murle"}, ["mus"] = {"Creek"}, ["mut"] = {"Western Muria"}, ["muu"] = {"Yaaku"}, ["muv"] = {"Muthuvan"}, ["mux"] = {"Bo-Ung"}, ["muy"] = {"Muyang"}, ["muz"] = {"Mursi"}, ["mva"] = {"Manam"}, ["mvb"] = {"Mattole"}, ["mvd"] = {"Mamboru"}, ["mve"] = {"Marwari (Pakistan)"}, ["mvf"] = {"Peripheral Mongolian"}, ["mvg"] = {"Yucuañe Mixtec"}, ["mvh"] = {"Mulgi"}, ["mvi"] = {"Miyako"}, ["mvk"] = {"Mekmek"}, ["mvl"] = {"Mbara (Australia)"}, ["mvn"] = {"Minaveha"}, ["mvo"] = {"Marovo"}, ["mvp"] = {"Duri"}, ["mvq"] = {"Moere"}, ["mvr"] = {"Marau"}, ["mvs"] = {"Massep"}, ["mvt"] = {"Mpotovoro"}, ["mvu"] = {"Marfa"}, ["mvv"] = {"Tagal Murut"}, ["mvw"] = {"Machinga"}, ["mvx"] = {"Meoswar"}, ["mvy"] = {"Indus Kohistani"}, ["mvz"] = {"Mesqan"}, ["mwa"] = {"Mwatebu"}, ["mwb"] = {"Juwal"}, ["mwc"] = {"Are"}, ["mwe"] = {"Mwera (Chimwera)"}, ["mwf"] = {"Murrinh-Patha"}, ["mwg"] = {"Aiklep"}, ["mwh"] = {"Mouk-Aria"}, ["mwi"] = {"Labo", "Ninde"}, ["mwk"] = {"Kita Maninkakan"}, ["mwl"] = {"Mirandese"}, ["mwm"] = {"Sar"}, ["mwn"] = {"Nyamwanga"}, ["mwo"] = {"Central Maewo"}, ["mwp"] = {"Kala Lagaw Ya"}, ["mwq"] = {"Mün Chin"}, ["mwr"] = {"Marwari"}, ["mws"] = {"Mwimbi-Muthambi"}, ["mwt"] = {"Moken"}, ["mwu"] = {"Mittu"}, ["mwv"] = {"Mentawai"}, ["mww"] = {"Hmong Daw"}, ["mwz"] = {"Moingi"}, ["mxa"] = {"Northwest Oaxaca Mixtec"}, ["mxb"] = {"Tezoatlán Mixtec"}, ["mxc"] = {"Manyika"}, ["mxd"] = {"Modang"}, ["mxe"] = {"Mele-Fila"}, ["mxf"] = {"Malgbe"}, ["mxg"] = {"Mbangala"}, ["mxh"] = {"Mvuba"}, ["mxi"] = {"Mozarabic"}, ["mxj"] = {"Miju-Mishmi", "Geman Deng"}, ["mxk"] = {"Monumbo"}, ["mxl"] = {"Maxi Gbe"}, ["mxm"] = {"Meramera"}, ["mxn"] = {"Moi (Indonesia)"}, ["mxo"] = {"Mbowe"}, ["mxp"] = {"Tlahuitoltepec Mixe"}, ["mxq"] = {"Juquila Mixe"}, ["mxr"] = {"Murik (Malaysia)"}, ["mxs"] = {"Huitepec Mixtec"}, ["mxt"] = {"Jamiltepec Mixtec"}, ["mxu"] = {"Mada (Cameroon)"}, ["mxv"] = {"Metlatónoc Mixtec"}, ["mxw"] = {"Namo"}, ["mxx"] = {"Mahou", "Mawukakan"}, ["mxy"] = {"Southeastern Nochixtlán Mixtec"}, ["mxz"] = {"Central Masela"}, ["myb"] = {"Mbay"}, ["myc"] = {"Mayeka"}, ["mye"] = {"Myene"}, ["myf"] = {"Bambassi"}, ["myg"] = {"Manta"}, ["myh"] = {"Makah"}, ["myj"] = {"Mangayat"}, ["myk"] = {"Mamara Senoufo"}, ["myl"] = {"Moma"}, ["mym"] = {"Me'en"}, ["myn"] = {"Mayan languages"}, ["myo"] = {"Anfillo"}, ["myp"] = {"Pirahã"}, ["myr"] = {"Muniche"}, ["mys"] = {"Mesmes"}, ["myu"] = {"Mundurukú"}, ["myv"] = {"Erzya"}, ["myw"] = {"Muyuw"}, ["myx"] = {"Masaaba"}, ["myy"] = {"Macuna"}, ["myz"] = {"Classical Mandaic"}, ["mza"] = {"Santa María Zacatepec Mixtec"}, ["mzb"] = {"Tumzabt"}, ["mzc"] = {"Madagascar Sign Language"}, ["mzd"] = {"Malimba"}, ["mze"] = {"Morawa"}, ["mzg"] = {"Monastic Sign Language"}, ["mzh"] = {"Wichí Lhamtés Güisnay"}, ["mzi"] = {"Ixcatlán Mazatec"}, ["mzj"] = {"Manya"}, ["mzk"] = {"Nigeria Mambila"}, ["mzl"] = {"Mazatlán Mixe"}, ["mzm"] = {"Mumuye"}, ["mzn"] = {"Mazanderani"}, ["mzo"] = {"Matipuhy"}, ["mzp"] = {"Movima"}, ["mzq"] = {"Mori Atas"}, ["mzr"] = {"Marúbo"}, ["mzs"] = {"Macanese"}, ["mzt"] = {"Mintil"}, ["mzu"] = {"Inapang"}, ["mzv"] = {"Manza"}, ["mzw"] = {"Deg"}, ["mzx"] = {"Mawayana"}, ["mzy"] = {"Mozambican Sign Language"}, ["mzz"] = {"Maiadomu"}, ["naa"] = {"Namla"}, ["nab"] = {"Southern Nambikuára"}, ["nac"] = {"Narak"}, ["nae"] = {"Naka'ela"}, ["naf"] = {"Nabak"}, ["nag"] = {"Naga Pidgin"}, ["nah"] = {"Nahuatl languages"}, ["nai"] = {"North American Indian languages"}, ["naj"] = {"Nalu"}, ["nak"] = {"Nakanai"}, ["nal"] = {"Nalik"}, ["nam"] = {"Ngan'gityemerri"}, ["nan"] = {"Min Nan Chinese"}, ["nao"] = {"Naaba"}, ["nap"] = {"Neapolitan"}, ["naq"] = {"Khoekhoe", "Nama (Namibia)"}, ["nar"] = {"Iguta"}, ["nas"] = {"Naasioi"}, ["nat"] = {"Ca̱hungwa̱rya̱", "Hungworo"}, ["naw"] = {"Nawuri"}, ["nax"] = {"Nakwi"}, ["nay"] = {"Ngarrindjeri"}, ["naz"] = {"Coatepec Nahuatl"}, ["nba"] = {"Nyemba"}, ["nbb"] = {"Ndoe"}, ["nbc"] = {"Chang Naga"}, ["nbd"] = {"Ngbinda"}, ["nbe"] = {"Konyak Naga"}, ["nbg"] = {"Nagarchal"}, ["nbh"] = {"Ngamo"}, ["nbi"] = {"Mao Naga"}, ["nbj"] = {"Ngarinyman"}, ["nbk"] = {"Nake"}, ["nbm"] = {"Ngbaka Ma'bo"}, ["nbn"] = {"Kuri"}, ["nbo"] = {"Nkukoli"}, ["nbp"] = {"Nnam"}, ["nbq"] = {"Nggem"}, ["nbr"] = {"Numana"}, ["nbs"] = {"Namibian Sign Language"}, ["nbt"] = {"Na"}, ["nbu"] = {"Rongmei Naga"}, ["nbv"] = {"Ngamambo"}, ["nbw"] = {"Southern Ngbandi"}, ["nby"] = {"Ningera"}, ["nca"] = {"Iyo"}, ["ncb"] = {"Central Nicobarese"}, ["ncc"] = {"Ponam"}, ["ncd"] = {"Nachering"}, ["nce"] = {"Yale"}, ["ncf"] = {"Notsi"}, ["ncg"] = {"Nisga'a"}, ["nch"] = {"Central Huasteca Nahuatl"}, ["nci"] = {"Classical Nahuatl"}, ["ncj"] = {"Northern Puebla Nahuatl"}, ["nck"] = {"Na-kara"}, ["ncl"] = {"Michoacán Nahuatl"}, ["ncm"] = {"Nambo"}, ["ncn"] = {"Nauna"}, ["nco"] = {"Sibe"}, ["ncq"] = {"Northern Katang"}, ["ncr"] = {"Ncane"}, ["ncs"] = {"Nicaraguan Sign Language"}, ["nct"] = {"Chothe Naga"}, ["ncu"] = {"Chumburung"}, ["ncx"] = {"Central Puebla Nahuatl"}, ["ncz"] = {"Natchez"}, ["nda"] = {"Ndasa"}, ["ndb"] = {"Kenswei Nsei"}, ["ndc"] = {"Ndau"}, ["ndd"] = {"Nde-Nsele-Nta"}, ["ndf"] = {"Nadruvian"}, ["ndg"] = {"Ndengereko"}, ["ndh"] = {"Ndali"}, ["ndi"] = {"Samba Leko"}, ["ndj"] = {"Ndamba"}, ["ndk"] = {"Ndaka"}, ["ndl"] = {"Ndolo"}, ["ndm"] = {"Ndam"}, ["ndn"] = {"Ngundi"}, ["ndp"] = {"Ndo"}, ["ndq"] = {"Ndombe"}, ["ndr"] = {"Ndoola"}, ["nds"] = {"Low German", "Low Saxon"}, ["ndt"] = {"Ndunga"}, ["ndu"] = {"Dugun"}, ["ndv"] = {"Ndut"}, ["ndw"] = {"Ndobo"}, ["ndx"] = {"Nduga"}, ["ndy"] = {"Lutos"}, ["ndz"] = {"Ndogo"}, ["nea"] = {"Eastern Ngad'a"}, ["neb"] = {"Toura (Côte d'Ivoire)"}, ["nec"] = {"Nedebang"}, ["ned"] = {"Nde-Gbite"}, ["nee"] = {"Nêlêmwa-Nixumwak"}, ["nef"] = {"Nefamese"}, ["neg"] = {"Negidal"}, ["neh"] = {"Nyenkha"}, ["nei"] = {"Neo-Hittite"}, ["nej"] = {"Neko"}, ["nek"] = {"Neku"}, ["nem"] = {"Nemi"}, ["nen"] = {"Nengone"}, ["neo"] = {"Ná-Meo"}, ["neq"] = {"North Central Mixe"}, ["ner"] = {"Yahadian"}, ["nes"] = {"Bhoti Kinnauri"}, ["net"] = {"Nete"}, ["neu"] = {"Neo"}, ["nev"] = {"Nyaheun"}, ["new"] = {"Newari", "Nepal Bhasa"}, ["nex"] = {"Neme"}, ["ney"] = {"Neyo"}, ["nez"] = {"Nez Perce"}, ["nfa"] = {"Dhao"}, ["nfd"] = {"Ahwai"}, ["nfl"] = {"Ayiwo", "Äiwoo"}, ["nfr"] = {"Nafaanra"}, ["nfu"] = {"Mfumte"}, ["nga"] = {"Ngbaka"}, ["ngb"] = {"Northern Ngbandi"}, ["ngc"] = {"Ngombe (Democratic Republic of Congo)"}, ["ngd"] = {"Ngando (Central African Republic)"}, ["nge"] = {"Ngemba"}, ["ngf"] = {"Trans-New Guinea languages"}, ["ngg"] = {"Ngbaka Manza"}, ["ngh"] = {"Nǁng"}, ["ngi"] = {"Ngizim"}, ["ngj"] = {"Ngie"}, ["ngk"] = {"Dalabon"}, ["ngl"] = {"Lomwe"}, ["ngm"] = {"Ngatik Men's Creole"}, ["ngn"] = {"Ngwo"}, ["ngp"] = {"Ngulu"}, ["ngq"] = {"Ngurimi", "Ngoreme"}, ["ngr"] = {"Engdewu"}, ["ngs"] = {"Gvoko"}, ["ngt"] = {"Kriang", "Ngeq"}, ["ngu"] = {"Guerrero Nahuatl"}, ["ngv"] = {"Nagumi"}, ["ngw"] = {"Ngwaba"}, ["ngx"] = {"Nggwahyi"}, ["ngy"] = {"Tibea"}, ["ngz"] = {"Ngungwel"}, ["nha"] = {"Nhanda"}, ["nhb"] = {"Beng"}, ["nhc"] = {"Tabasco Nahuatl"}, ["nhd"] = {"Chiripá", "Ava Guaraní"}, ["nhe"] = {"Eastern Huasteca Nahuatl"}, ["nhf"] = {"Nhuwala"}, ["nhg"] = {"Tetelcingo Nahuatl"}, ["nhh"] = {"Nahari"}, ["nhi"] = {"Zacatlán-Ahuacatlán-Tepetzintla Nahuatl"}, ["nhk"] = {"Isthmus-Cosoleacaque Nahuatl"}, ["nhm"] = {"Morelos Nahuatl"}, ["nhn"] = {"Central Nahuatl"}, ["nho"] = {"Takuu"}, ["nhp"] = {"Isthmus-Pajapan Nahuatl"}, ["nhq"] = {"Huaxcaleca Nahuatl"}, ["nhr"] = {"Naro"}, ["nht"] = {"Ometepec Nahuatl"}, ["nhu"] = {"Noone"}, ["nhv"] = {"Temascaltepec Nahuatl"}, ["nhw"] = {"Western Huasteca Nahuatl"}, ["nhx"] = {"Isthmus-Mecayapan Nahuatl"}, ["nhy"] = {"Northern Oaxaca Nahuatl"}, ["nhz"] = {"Santa María La Alta Nahuatl"}, ["nia"] = {"Nias"}, ["nib"] = {"Nakame"}, ["nic"] = {"Niger-Kordofanian languages"}, ["nid"] = {"Ngandi"}, ["nie"] = {"Niellim"}, ["nif"] = {"Nek"}, ["nig"] = {"Ngalakgan"}, ["nih"] = {"Nyiha (Tanzania)"}, ["nii"] = {"Nii"}, ["nij"] = {"Ngaju"}, ["nik"] = {"Southern Nicobarese"}, ["nil"] = {"Nila"}, ["nim"] = {"Nilamba"}, ["nin"] = {"Ninzo"}, ["nio"] = {"Nganasan"}, ["niq"] = {"Nandi"}, ["nir"] = {"Nimboran"}, ["nis"] = {"Nimi"}, ["nit"] = {"Southeastern Kolami"}, ["niu"] = {"Niuean"}, ["niv"] = {"Gilyak"}, ["niw"] = {"Nimo"}, ["nix"] = {"Hema"}, ["niy"] = {"Ngiti"}, ["niz"] = {"Ningil"}, ["nja"] = {"Nzanyi"}, ["njb"] = {"Nocte Naga"}, ["njd"] = {"Ndonde Hamba"}, ["njh"] = {"Lotha Naga"}, ["nji"] = {"Gudanji"}, ["njj"] = {"Njen"}, ["njl"] = {"Njalgulgule"}, ["njm"] = {"Angami Naga"}, ["njn"] = {"Liangmai Naga"}, ["njo"] = {"Ao Naga"}, ["njr"] = {"Njerep"}, ["njs"] = {"Nisa"}, ["njt"] = {"Ndyuka-Trio Pidgin"}, ["nju"] = {"Ngadjunmaya"}, ["njx"] = {"Kunyi"}, ["njy"] = {"Njyem"}, ["njz"] = {"Nyishi"}, ["nka"] = {"Nkoya"}, ["nkb"] = {"Khoibu Naga"}, ["nkc"] = {"Nkongho"}, ["nkd"] = {"Koireng"}, ["nke"] = {"Duke"}, ["nkf"] = {"Inpui Naga"}, ["nkg"] = {"Nekgini"}, ["nkh"] = {"Khezha Naga"}, ["nki"] = {"Thangal Naga"}, ["nkj"] = {"Nakai"}, ["nkk"] = {"Nokuku"}, ["nkm"] = {"Namat"}, ["nkn"] = {"Nkangala"}, ["nko"] = {"Nkonya"}, ["nkp"] = {"Niuatoputapu"}, ["nkq"] = {"Nkami"}, ["nkr"] = {"Nukuoro"}, ["nks"] = {"North Asmat"}, ["nkt"] = {"Nyika (Tanzania)"}, ["nku"] = {"Bouna Kulango"}, ["nkv"] = {"Nyika (Malawi and Zambia)"}, ["nkw"] = {"Nkutu"}, ["nkx"] = {"Nkoroo"}, ["nkz"] = {"Nkari"}, ["nla"] = {"Ngombale"}, ["nlc"] = {"Nalca"}, ["nle"] = {"East Nyala"}, ["nlg"] = {"Gela"}, ["nli"] = {"Grangali"}, ["nlj"] = {"Nyali"}, ["nlk"] = {"Ninia Yali"}, ["nll"] = {"Nihali"}, ["nlm"] = {"Mankiyali"}, ["nlo"] = {"Ngul"}, ["nlq"] = {"Lao Naga"}, ["nlu"] = {"Nchumbulu"}, ["nlv"] = {"Orizaba Nahuatl"}, ["nlw"] = {"Walangama"}, ["nlx"] = {"Nahali"}, ["nly"] = {"Nyamal"}, ["nlz"] = {"Nalögo"}, ["nma"] = {"Maram Naga"}, ["nmb"] = {"Big Nambas", "V'ënen Taut"}, ["nmc"] = {"Ngam"}, ["nmd"] = {"Ndumu"}, ["nme"] = {"Mzieme Naga"}, ["nmf"] = {"Tangkhul Naga (India)"}, ["nmg"] = {"Kwasio"}, ["nmh"] = {"Monsang Naga"}, ["nmi"] = {"Nyam"}, ["nmj"] = {"Ngombe (Central African Republic)"}, ["nmk"] = {"Namakura"}, ["nml"] = {"Ndemli"}, ["nmm"] = {"Manangba"}, ["nmn"] = {"ǃXóõ"}, ["nmo"] = {"Moyon Naga"}, ["nmp"] = {"Nimanbur"}, ["nmq"] = {"Nambya"}, ["nmr"] = {"Nimbari"}, ["nms"] = {"Letemboi"}, ["nmt"] = {"Namonuito"}, ["nmu"] = {"Northeast Maidu"}, ["nmv"] = {"Ngamini"}, ["nmw"] = {"Nimoa", "Rifao"}, ["nmx"] = {"Nama (Papua New Guinea)"}, ["nmy"] = {"Namuyi"}, ["nmz"] = {"Nawdm"}, ["nna"] = {"Nyangumarta"}, ["nnb"] = {"Nande"}, ["nnc"] = {"Nancere"}, ["nnd"] = {"West Ambae"}, ["nne"] = {"Ngandyera"}, ["nnf"] = {"Ngaing"}, ["nng"] = {"Maring Naga"}, ["nnh"] = {"Ngiemboon"}, ["nni"] = {"North Nuaulu"}, ["nnj"] = {"Nyangatom"}, ["nnk"] = {"Nankina"}, ["nnl"] = {"Northern Rengma Naga"}, ["nnm"] = {"Namia"}, ["nnn"] = {"Ngete"}, ["nnp"] = {"Wancho Naga"}, ["nnq"] = {"Ngindo"}, ["nnr"] = {"Narungga"}, ["nnt"] = {"Nanticoke"}, ["nnu"] = {"Dwang"}, ["nnv"] = {"Nugunu (Australia)"}, ["nnw"] = {"Southern Nuni"}, ["nny"] = {"Nyangga"}, ["nnz"] = {"Nda'nda'"}, ["noa"] = {"Woun Meu"}, ["noc"] = {"Nuk"}, ["nod"] = {"Northern Thai"}, ["noe"] = {"Nimadi"}, ["nof"] = {"Nomane"}, ["nog"] = {"Nogai"}, ["noh"] = {"Nomu"}, ["noi"] = {"Noiri"}, ["noj"] = {"Nonuya"}, ["nok"] = {"Nooksack"}, ["nol"] = {"Nomlaki"}, ["nom"] = {"Nocamán"}, ["non"] = {"Old Norse"}, ["nop"] = {"Numanggang"}, ["noq"] = {"Ngongo"}, ["nos"] = {"Eastern Nisu"}, ["not"] = {"Nomatsiguenga"}, ["nou"] = {"Ewage-Notu"}, ["nov"] = {"Novial"}, ["now"] = {"Nyambo"}, ["noy"] = {"Noy"}, ["noz"] = {"Nayi"}, ["npa"] = {"Nar Phu"}, ["npb"] = {"Nupbikha"}, ["npg"] = {"Ponyo-Gongwang Naga"}, ["nph"] = {"Phom Naga"}, ["npi"] = {"Nepali (individual language)"}, ["npl"] = {"Southeastern Puebla Nahuatl"}, ["npn"] = {"Mondropolon"}, ["npo"] = {"Pochuri Naga"}, ["nps"] = {"Nipsan"}, ["npu"] = {"Puimei Naga"}, ["npx"] = {"Noipx"}, ["npy"] = {"Napu"}, ["nqg"] = {"Southern Nago"}, ["nqk"] = {"Kura Ede Nago"}, ["nql"] = {"Ngendelengo"}, ["nqm"] = {"Ndom"}, ["nqn"] = {"Nen"}, ["nqo"] = {"N'Ko", "N’Ko"}, ["nqq"] = {"Kyan-Karyaw Naga"}, ["nqt"] = {"Nteng"}, ["nqy"] = {"Akyaung Ari Naga"}, ["nra"] = {"Ngom"}, ["nrb"] = {"Nara"}, ["nrc"] = {"Noric"}, ["nre"] = {"Southern Rengma Naga"}, ["nrf"] = {"Jèrriais", "Guernésiais"}, ["nrg"] = {"Narango"}, ["nri"] = {"Chokri Naga"}, ["nrk"] = {"Ngarla"}, ["nrl"] = {"Ngarluma"}, ["nrm"] = {"Narom"}, ["nrn"] = {"Norn"}, ["nrp"] = {"North Picene"}, ["nrr"] = {"Norra", "Nora"}, ["nrt"] = {"Northern Kalapuya"}, ["nru"] = {"Narua"}, ["nrx"] = {"Ngurmbur"}, ["nrz"] = {"Lala"}, ["nsa"] = {"Sangtam Naga"}, ["nsb"] = {"Lower Nossob"}, ["nsc"] = {"Nshi"}, ["nsd"] = {"Southern Nisu"}, ["nse"] = {"Nsenga"}, ["nsf"] = {"Northwestern Nisu"}, ["nsg"] = {"Ngasa"}, ["nsh"] = {"Ngoshie"}, ["nsi"] = {"Nigerian Sign Language"}, ["nsk"] = {"Naskapi"}, ["nsl"] = {"Norwegian Sign Language"}, ["nsm"] = {"Sumi Naga"}, ["nsn"] = {"Nehan"}, ["nso"] = {"Pedi", "Northern Sotho", "Sepedi"}, ["nsp"] = {"Nepalese Sign Language"}, ["nsq"] = {"Northern Sierra Miwok"}, ["nsr"] = {"Maritime Sign Language"}, ["nss"] = {"Nali"}, ["nst"] = {"Tase Naga"}, ["nsu"] = {"Sierra Negra Nahuatl"}, ["nsv"] = {"Southwestern Nisu"}, ["nsw"] = {"Navut"}, ["nsx"] = {"Nsongo"}, ["nsy"] = {"Nasal"}, ["nsz"] = {"Nisenan"}, ["ntd"] = {"Northern Tidung"}, ["nte"] = {"Nathembo"}, ["ntg"] = {"Ngantangarra"}, ["nti"] = {"Natioro"}, ["ntj"] = {"Ngaanyatjarra"}, ["ntk"] = {"Ikoma-Nata-Isenye"}, ["ntm"] = {"Nateni"}, ["nto"] = {"Ntomba"}, ["ntp"] = {"Northern Tepehuan"}, ["ntr"] = {"Delo"}, ["ntu"] = {"Natügu"}, ["ntw"] = {"Nottoway"}, ["ntx"] = {"Tangkhul Naga (Myanmar)"}, ["nty"] = {"Mantsi"}, ["ntz"] = {"Natanzi"}, ["nua"] = {"Yuanga"}, ["nub"] = {"Nubian languages"}, ["nuc"] = {"Nukuini"}, ["nud"] = {"Ngala"}, ["nue"] = {"Ngundu"}, ["nuf"] = {"Nusu"}, ["nug"] = {"Nungali"}, ["nuh"] = {"Ndunda"}, ["nui"] = {"Ngumbi"}, ["nuj"] = {"Nyole"}, ["nuk"] = {"Nuu-chah-nulth", "Nuuchahnulth"}, ["nul"] = {"Nusa Laut"}, ["num"] = {"Niuafo'ou"}, ["nun"] = {"Anong"}, ["nuo"] = {"Nguôn"}, ["nup"] = {"Nupe-Nupe-Tako"}, ["nuq"] = {"Nukumanu"}, ["nur"] = {"Nukuria"}, ["nus"] = {"Nuer"}, ["nut"] = {"Nung (Viet Nam)"}, ["nuu"] = {"Ngbundu"}, ["nuv"] = {"Northern Nuni"}, ["nuw"] = {"Nguluwan"}, ["nux"] = {"Mehek"}, ["nuy"] = {"Nunggubuyu"}, ["nuz"] = {"Tlamacazapa Nahuatl"}, ["nvh"] = {"Nasarian"}, ["nvm"] = {"Namiae"}, ["nvo"] = {"Nyokon"}, ["nwa"] = {"Nawathinehena"}, ["nwb"] = {"Nyabwa"}, ["nwc"] = {"Classical Newari", "Classical Nepal Bhasa", "Old Newari"}, ["nwe"] = {"Ngwe"}, ["nwg"] = {"Ngayawung"}, ["nwi"] = {"Southwest Tanna"}, ["nwm"] = {"Nyamusa-Molo"}, ["nwo"] = {"Nauo"}, ["nwr"] = {"Nawaru"}, ["nww"] = {"Ndwewe"}, ["nwx"] = {"Middle Newar"}, ["nwy"] = {"Nottoway-Meherrin"}, ["nxa"] = {"Nauete"}, ["nxd"] = {"Ngando (Democratic Republic of Congo)"}, ["nxe"] = {"Nage"}, ["nxg"] = {"Ngad'a"}, ["nxi"] = {"Nindi"}, ["nxk"] = {"Koki Naga"}, ["nxl"] = {"South Nuaulu"}, ["nxm"] = {"Numidian"}, ["nxn"] = {"Ngawun"}, ["nxo"] = {"Ndambomo"}, ["nxq"] = {"Naxi"}, ["nxr"] = {"Ninggerum"}, ["nxx"] = {"Nafri"}, ["nyb"] = {"Nyangbo"}, ["nyc"] = {"Nyanga-li"}, ["nyd"] = {"Nyore", "Olunyole"}, ["nye"] = {"Nyengo"}, ["nyf"] = {"Giryama", "Kigiryama"}, ["nyg"] = {"Nyindu"}, ["nyh"] = {"Nyikina"}, ["nyi"] = {"Ama (Sudan)"}, ["nyj"] = {"Nyanga"}, ["nyk"] = {"Nyaneka"}, ["nyl"] = {"Nyeu"}, ["nym"] = {"Nyamwezi"}, ["nyn"] = {"Nyankole"}, ["nyo"] = {"Nyoro"}, ["nyp"] = {"Nyang'i"}, ["nyq"] = {"Nayini"}, ["nyr"] = {"Nyiha (Malawi)"}, ["nys"] = {"Nyungar"}, ["nyt"] = {"Nyawaygi"}, ["nyu"] = {"Nyungwe"}, ["nyv"] = {"Nyulnyul"}, ["nyw"] = {"Nyaw"}, ["nyx"] = {"Nganyaywana"}, ["nyy"] = {"Nyakyusa-Ngonde"}, ["nza"] = {"Tigon Mbembe"}, ["nzb"] = {"Njebi"}, ["nzd"] = {"Nzadi"}, ["nzi"] = {"Nzima"}, ["nzk"] = {"Nzakara"}, ["nzm"] = {"Zeme Naga"}, ["nzs"] = {"New Zealand Sign Language"}, ["nzu"] = {"Teke-Nzikou"}, ["nzy"] = {"Nzakambay"}, ["nzz"] = {"Nanga Dama Dogon"}, ["oaa"] = {"Orok"}, ["oac"] = {"Oroch"}, ["oar"] = {"Old Aramaic (up to 700 BCE)", "Ancient Aramaic (up to 700 BCE)"}, ["oav"] = {"Old Avar"}, ["obi"] = {"Obispeño"}, ["obk"] = {"Southern Bontok"}, ["obl"] = {"Oblo"}, ["obm"] = {"Moabite"}, ["obo"] = {"Obo Manobo"}, ["obr"] = {"Old Burmese"}, ["obt"] = {"Old Breton"}, ["obu"] = {"Obulom"}, ["oca"] = {"Ocaina"}, ["och"] = {"Old Chinese"}, ["ocm"] = {"Old Cham"}, ["oco"] = {"Old Cornish"}, ["ocu"] = {"Atzingo Matlatzinca"}, ["oda"] = {"Odut"}, ["odk"] = {"Od"}, ["odt"] = {"Old Dutch"}, ["odu"] = {"Odual"}, ["ofo"] = {"Ofo"}, ["ofs"] = {"Old Frisian"}, ["ofu"] = {"Efutop"}, ["ogb"] = {"Ogbia"}, ["ogc"] = {"Ogbah"}, ["oge"] = {"Old Georgian"}, ["ogg"] = {"Ogbogolo"}, ["ogo"] = {"Khana"}, ["ogu"] = {"Ogbronuagum"}, ["oht"] = {"Old Hittite"}, ["ohu"] = {"Old Hungarian"}, ["oia"] = {"Oirata"}, ["oie"] = {"Okolie"}, ["oin"] = {"Inebu One"}, ["ojb"] = {"Northwestern Ojibwa"}, ["ojc"] = {"Central Ojibwa"}, ["ojg"] = {"Eastern Ojibwa"}, ["ojp"] = {"Old Japanese"}, ["ojs"] = {"Severn Ojibwa"}, ["ojv"] = {"Ontong Java"}, ["ojw"] = {"Western Ojibwa"}, ["oka"] = {"Okanagan"}, ["okb"] = {"Okobo"}, ["okc"] = {"Kobo"}, ["okd"] = {"Okodia"}, ["oke"] = {"Okpe (Southwestern Edo)"}, ["okg"] = {"Koko Babangk"}, ["okh"] = {"Koresh-e Rostam"}, ["oki"] = {"Okiek"}, ["okj"] = {"Oko-Juwoi"}, ["okk"] = {"Kwamtim One"}, ["okl"] = {"Old Kentish Sign Language"}, ["okm"] = {"Middle Korean (10th-16th cent.)"}, ["okn"] = {"Oki-No-Erabu"}, ["oko"] = {"Old Korean (3rd-9th cent.)"}, ["okr"] = {"Kirike"}, ["oks"] = {"Oko-Eni-Osayen"}, ["oku"] = {"Oku"}, ["okv"] = {"Orokaiva"}, ["okx"] = {"Okpe (Northwestern Edo)"}, ["okz"] = {"Old Khmer"}, ["ola"] = {"Walungge"}, ["old"] = {"Mochi"}, ["ole"] = {"Olekha"}, ["olk"] = {"Olkol"}, ["olm"] = {"Oloma"}, ["olo"] = {"Livvi"}, ["olr"] = {"Olrat"}, ["olt"] = {"Old Lithuanian"}, ["olu"] = {"Kuvale"}, ["oma"] = {"Omaha-Ponca"}, ["omb"] = {"East Ambae"}, ["omc"] = {"Mochica"}, ["omg"] = {"Omagua"}, ["omi"] = {"Omi"}, ["omk"] = {"Omok"}, ["oml"] = {"Ombo"}, ["omn"] = {"Minoan"}, ["omo"] = {"Utarmbung"}, ["omp"] = {"Old Manipuri"}, ["omq"] = {"Oto-Manguean languages"}, ["omr"] = {"Old Marathi"}, ["omt"] = {"Omotik"}, ["omu"] = {"Omurano"}, ["omv"] = {"Omotic languages"}, ["omw"] = {"South Tairora"}, ["omx"] = {"Old Mon"}, ["omy"] = {"Old Malay"}, ["ona"] = {"Ona"}, ["onb"] = {"Lingao"}, ["one"] = {"Oneida"}, ["ong"] = {"Olo"}, ["oni"] = {"Onin"}, ["onj"] = {"Onjob"}, ["onk"] = {"Kabore One"}, ["onn"] = {"Onobasulu"}, ["ono"] = {"Onondaga"}, ["onp"] = {"Sartang"}, ["onr"] = {"Northern One"}, ["ons"] = {"Ono"}, ["ont"] = {"Ontenu"}, ["onu"] = {"Unua"}, ["onw"] = {"Old Nubian"}, ["onx"] = {"Onin Based Pidgin"}, ["ood"] = {"Tohono O'odham"}, ["oog"] = {"Ong"}, ["oon"] = {"Önge"}, ["oor"] = {"Oorlams"}, ["oos"] = {"Old Ossetic"}, ["opa"] = {"Okpamheri"}, ["opk"] = {"Kopkaka"}, ["opm"] = {"Oksapmin"}, ["opo"] = {"Opao"}, ["opt"] = {"Opata"}, ["opy"] = {"Ofayé"}, ["ora"] = {"Oroha"}, ["orc"] = {"Orma"}, ["ore"] = {"Orejón"}, ["org"] = {"Oring"}, ["orh"] = {"Oroqen"}, ["orn"] = {"Orang Kanaq"}, ["oro"] = {"Orokolo"}, ["orr"] = {"Oruma"}, ["ors"] = {"Orang Seletar"}, ["ort"] = {"Adivasi Oriya"}, ["oru"] = {"Ormuri"}, ["orv"] = {"Old Russian"}, ["orw"] = {"Oro Win"}, ["orx"] = {"Oro"}, ["ory"] = {"Odia (individual language)", "Oriya (individual language)"}, ["orz"] = {"Ormu"}, ["osa"] = {"Osage"}, ["osc"] = {"Oscan"}, ["osi"] = {"Osing"}, ["osn"] = {"Old Sundanese"}, ["oso"] = {"Ososo"}, ["osp"] = {"Old Spanish"}, ["ost"] = {"Osatu"}, ["osu"] = {"Southern One"}, ["osx"] = {"Old Saxon"}, ["ota"] = {"Ottoman Turkish (1500-1928)"}, ["otb"] = {"Old Tibetan"}, ["otd"] = {"Ot Danum"}, ["ote"] = {"Mezquital Otomi"}, ["oti"] = {"Oti"}, ["otk"] = {"Old Turkish"}, ["otl"] = {"Tilapa Otomi"}, ["otm"] = {"Eastern Highland Otomi"}, ["otn"] = {"Tenango Otomi"}, ["oto"] = {"Otomian languages"}, ["otq"] = {"Querétaro Otomi"}, ["otr"] = {"Otoro"}, ["ots"] = {"Estado de México Otomi"}, ["ott"] = {"Temoaya Otomi"}, ["otu"] = {"Otuke"}, ["otw"] = {"Ottawa"}, ["otx"] = {"Texcatepec Otomi"}, ["oty"] = {"Old Tamil"}, ["otz"] = {"Ixtenco Otomi"}, ["oua"] = {"Tagargrent"}, ["oub"] = {"Glio-Oubi"}, ["oue"] = {"Oune"}, ["oui"] = {"Old Uighur"}, ["oum"] = {"Ouma"}, ["ovd"] = {"Elfdalian", "Övdalian"}, ["owi"] = {"Owiniga"}, ["owl"] = {"Old Welsh"}, ["oyb"] = {"Oy"}, ["oyd"] = {"Oyda"}, ["oym"] = {"Wayampi"}, ["oyy"] = {"Oya'oya"}, ["ozm"] = {"Koonzime"}, ["paa"] = {"Papuan languages"}, ["pab"] = {"Parecís"}, ["pac"] = {"Pacoh"}, ["pad"] = {"Paumarí"}, ["pae"] = {"Pagibete"}, ["paf"] = {"Paranawát"}, ["pag"] = {"Pangasinan"}, ["pah"] = {"Tenharim"}, ["pai"] = {"Pe"}, ["pak"] = {"Parakanã"}, ["pal"] = {"Pahlavi"}, ["pam"] = {"Pampanga", "Kapampangan"}, ["pao"] = {"Northern Paiute"}, ["pap"] = {"Papiamento"}, ["paq"] = {"Parya"}, ["par"] = {"Panamint", "Timbisha"}, ["pas"] = {"Papasena"}, ["pau"] = {"Palauan"}, ["pav"] = {"Pakaásnovos"}, ["paw"] = {"Pawnee"}, ["pax"] = {"Pankararé"}, ["pay"] = {"Pech"}, ["paz"] = {"Pankararú"}, ["pbb"] = {"Páez"}, ["pbc"] = {"Patamona"}, ["pbe"] = {"Mezontla Popoloca"}, ["pbf"] = {"Coyotepec Popoloca"}, ["pbg"] = {"Paraujano"}, ["pbh"] = {"E'ñapa Woromaipu"}, ["pbi"] = {"Parkwa"}, ["pbl"] = {"Mak (Nigeria)"}, ["pbm"] = {"Puebla Mazatec"}, ["pbn"] = {"Kpasam"}, ["pbo"] = {"Papel"}, ["pbp"] = {"Badyara"}, ["pbr"] = {"Pangwa"}, ["pbs"] = {"Central Pame"}, ["pbt"] = {"Southern Pashto"}, ["pbu"] = {"Northern Pashto"}, ["pbv"] = {"Pnar"}, ["pby"] = {"Pyu (Papua New Guinea)"}, ["pca"] = {"Santa Inés Ahuatempan Popoloca"}, ["pcb"] = {"Pear"}, ["pcc"] = {"Bouyei"}, ["pcd"] = {"Picard"}, ["pce"] = {"Ruching Palaung"}, ["pcf"] = {"Paliyan"}, ["pcg"] = {"Paniya"}, ["pch"] = {"Pardhan"}, ["pci"] = {"Duruwa"}, ["pcj"] = {"Parenga"}, ["pck"] = {"Paite Chin"}, ["pcl"] = {"Pardhi"}, ["pcm"] = {"Nigerian Pidgin"}, ["pcn"] = {"Piti"}, ["pcp"] = {"Pacahuara"}, ["pcw"] = {"Pyapun"}, ["pda"] = {"Anam"}, ["pdc"] = {"Pennsylvania German"}, ["pdi"] = {"Pa Di"}, ["pdn"] = {"Podena", "Fedan"}, ["pdo"] = {"Padoe"}, ["pdt"] = {"Plautdietsch"}, ["pdu"] = {"Kayan"}, ["pea"] = {"Peranakan Indonesian"}, ["peb"] = {"Eastern Pomo"}, ["ped"] = {"Mala (Papua New Guinea)"}, ["pee"] = {"Taje"}, ["pef"] = {"Northeastern Pomo"}, ["peg"] = {"Pengo"}, ["peh"] = {"Bonan"}, ["pei"] = {"Chichimeca-Jonaz"}, ["pej"] = {"Northern Pomo"}, ["pek"] = {"Penchal"}, ["pel"] = {"Pekal"}, ["pem"] = {"Phende"}, ["peo"] = {"Old Persian (ca. 600-400 B.C.)"}, ["pep"] = {"Kunja"}, ["peq"] = {"Southern Pomo"}, ["pes"] = {"Iranian Persian"}, ["pev"] = {"Pémono"}, ["pex"] = {"Petats"}, ["pey"] = {"Petjo"}, ["pez"] = {"Eastern Penan"}, ["pfa"] = {"Pááfang"}, ["pfe"] = {"Pere"}, ["pfl"] = {"Pfaelzisch"}, ["pga"] = {"Sudanese Creole Arabic"}, ["pgd"] = {"Gāndhārī"}, ["pgg"] = {"Pangwali"}, ["pgi"] = {"Pagi"}, ["pgk"] = {"Rerep"}, ["pgl"] = {"Primitive Irish"}, ["pgn"] = {"Paelignian"}, ["pgs"] = {"Pangseng"}, ["pgu"] = {"Pagu"}, ["pgz"] = {"Papua New Guinean Sign Language"}, ["pha"] = {"Pa-Hng"}, ["phd"] = {"Phudagi"}, ["phg"] = {"Phuong"}, ["phh"] = {"Phukha"}, ["phi"] = {"Philippine languages"}, ["phj"] = {"Pahari"}, ["phk"] = {"Phake"}, ["phl"] = {"Phalura", "Palula"}, ["phm"] = {"Phimbi"}, ["phn"] = {"Phoenician"}, ["pho"] = {"Phunoi"}, ["phq"] = {"Phana'"}, ["phr"] = {"Pahari-Potwari"}, ["pht"] = {"Phu Thai"}, ["phu"] = {"Phuan"}, ["phv"] = {"Pahlavani"}, ["phw"] = {"Phangduwali"}, ["pia"] = {"Pima Bajo"}, ["pib"] = {"Yine"}, ["pic"] = {"Pinji"}, ["pid"] = {"Piaroa"}, ["pie"] = {"Piro"}, ["pif"] = {"Pingelapese"}, ["pig"] = {"Pisabo"}, ["pih"] = {"Pitcairn-Norfolk"}, ["pij"] = {"Pijao"}, ["pil"] = {"Yom"}, ["pim"] = {"Powhatan"}, ["pin"] = {"Piame"}, ["pio"] = {"Piapoco"}, ["pip"] = {"Pero"}, ["pir"] = {"Piratapuyo"}, ["pis"] = {"Pijin"}, ["pit"] = {"Pitta Pitta"}, ["piu"] = {"Pintupi-Luritja"}, ["piv"] = {"Pileni", "Vaeakau-Taumako"}, ["piw"] = {"Pimbwe"}, ["pix"] = {"Piu"}, ["piy"] = {"Piya-Kwonci"}, ["piz"] = {"Pije"}, ["pjt"] = {"Pitjantjatjara"}, ["pka"] = {"Ardhamāgadhī Prākrit"}, ["pkb"] = {"Pokomo", "Kipfokomo"}, ["pkc"] = {"Paekche"}, ["pkg"] = {"Pak-Tong"}, ["pkh"] = {"Pankhu"}, ["pkn"] = {"Pakanha"}, ["pko"] = {"Pökoot"}, ["pkp"] = {"Pukapuka"}, ["pkr"] = {"Attapady Kurumba"}, ["pks"] = {"Pakistan Sign Language"}, ["pkt"] = {"Maleng"}, ["pku"] = {"Paku"}, ["pla"] = {"Miani"}, ["plb"] = {"Polonombauk"}, ["plc"] = {"Central Palawano"}, ["pld"] = {"Polari"}, ["ple"] = {"Palu'e"}, ["plf"] = {"Central Malayo-Polynesian languages"}, ["plg"] = {"Pilagá"}, ["plh"] = {"Paulohi"}, ["plj"] = {"Polci"}, ["plk"] = {"Kohistani Shina"}, ["pll"] = {"Shwe Palaung"}, ["pln"] = {"Palenquero"}, ["plo"] = {"Oluta Popoluca"}, ["plq"] = {"Palaic"}, ["plr"] = {"Palaka Senoufo"}, ["pls"] = {"San Marcos Tlacoyalco Popoloca", "San Marcos Tlalcoyalco Popoloca"}, ["plt"] = {"Plateau Malagasy"}, ["plu"] = {"Palikúr"}, ["plv"] = {"Southwest Palawano"}, ["plw"] = {"Brooke's Point Palawano"}, ["ply"] = {"Bolyu"}, ["plz"] = {"Paluan"}, ["pma"] = {"Paama"}, ["pmb"] = {"Pambia"}, ["pmd"] = {"Pallanganmiddang"}, ["pme"] = {"Pwaamei"}, ["pmf"] = {"Pamona"}, ["pmh"] = {"Māhārāṣṭri Prākrit"}, ["pmi"] = {"Northern Pumi"}, ["pmj"] = {"Southern Pumi"}, ["pmk"] = {"Pamlico"}, ["pml"] = {"Lingua Franca"}, ["pmm"] = {"Pomo"}, ["pmn"] = {"Pam"}, ["pmo"] = {"Pom"}, ["pmq"] = {"Northern Pame"}, ["pmr"] = {"Paynamar"}, ["pms"] = {"Piemontese"}, ["pmt"] = {"Tuamotuan"}, ["pmw"] = {"Plains Miwok"}, ["pmx"] = {"Poumei Naga"}, ["pmy"] = {"Papuan Malay"}, ["pmz"] = {"Southern Pame"}, ["pna"] = {"Punan Bah-Biau"}, ["pnb"] = {"Western Panjabi"}, ["pnc"] = {"Pannei"}, ["pnd"] = {"Mpinda"}, ["pne"] = {"Western Penan"}, ["png"] = {"Pangu", "Pongu"}, ["pnh"] = {"Penrhyn"}, ["pni"] = {"Aoheng"}, ["pnj"] = {"Pinjarup"}, ["pnk"] = {"Paunaka"}, ["pnl"] = {"Paleni"}, ["pnm"] = {"Punan Batu 1"}, ["pnn"] = {"Pinai-Hagahai"}, ["pno"] = {"Panobo"}, ["pnp"] = {"Pancana"}, ["pnq"] = {"Pana (Burkina Faso)"}, ["pnr"] = {"Panim"}, ["pns"] = {"Ponosakan"}, ["pnt"] = {"Pontic"}, ["pnu"] = {"Jiongnai Bunu"}, ["pnv"] = {"Pinigura"}, ["pnw"] = {"Banyjima", "Panytyima"}, ["pnx"] = {"Phong-Kniang"}, ["pny"] = {"Pinyin"}, ["pnz"] = {"Pana (Central African Republic)"}, ["poc"] = {"Poqomam"}, ["poe"] = {"San Juan Atzingo Popoloca"}, ["pof"] = {"Poke"}, ["pog"] = {"Potiguára"}, ["poh"] = {"Poqomchi'"}, ["poi"] = {"Highland Popoluca"}, ["pok"] = {"Pokangá"}, ["pom"] = {"Southeastern Pomo"}, ["pon"] = {"Pohnpeian"}, ["poo"] = {"Central Pomo"}, ["pop"] = {"Pwapwâ"}, ["poq"] = {"Texistepec Popoluca"}, ["pos"] = {"Sayula Popoluca"}, ["pot"] = {"Potawatomi"}, ["pov"] = {"Upper Guinea Crioulo"}, ["pow"] = {"San Felipe Otlaltepec Popoloca"}, ["pox"] = {"Polabian"}, ["poy"] = {"Pogolo"}, ["poz"] = {"Malayo-Polynesian languages"}, ["ppe"] = {"Papi"}, ["ppi"] = {"Paipai"}, ["ppk"] = {"Uma"}, ["ppl"] = {"Pipil", "Nicarao"}, ["ppm"] = {"Papuma"}, ["ppn"] = {"Papapana"}, ["ppo"] = {"Folopa"}, ["ppp"] = {"Pelende"}, ["ppq"] = {"Pei"}, ["pps"] = {"San Luís Temalacayuca Popoloca"}, ["ppt"] = {"Pare"}, ["ppu"] = {"Papora"}, ["pqa"] = {"Pa'a"}, ["pqe"] = {"Eastern Malayo-Polynesian languages"}, ["pqm"] = {"Malecite-Passamaquoddy"}, ["pqw"] = {"Western Malayo-Polynesian languages"}, ["pra"] = {"Prakrit languages"}, ["prc"] = {"Parachi"}, ["prd"] = {"Parsi-Dari"}, ["pre"] = {"Principense"}, ["prf"] = {"Paranan"}, ["prg"] = {"Prussian"}, ["prh"] = {"Porohanon"}, ["pri"] = {"Paicî"}, ["prk"] = {"Parauk"}, ["prl"] = {"Peruvian Sign Language"}, ["prm"] = {"Kibiri"}, ["prn"] = {"Prasuni"}, ["pro"] = {"Old Provençal (to 1500)", "Old Occitan (to 1500)"}, ["prp"] = {"Parsi"}, ["prq"] = {"Ashéninka Perené"}, ["prr"] = {"Puri"}, ["prs"] = {"Dari", "Afghan Persian"}, ["prt"] = {"Phai"}, ["pru"] = {"Puragi"}, ["prw"] = {"Parawen"}, ["prx"] = {"Purik"}, ["prz"] = {"Providencia Sign Language"}, ["psa"] = {"Asue Awyu"}, ["psc"] = {"Iranian Sign Language", "Persian Sign Language"}, ["psd"] = {"Plains Indian Sign Language"}, ["pse"] = {"Central Malay"}, ["psg"] = {"Penang Sign Language"}, ["psh"] = {"Southwest Pashai", "Southwest Pashayi"}, ["psi"] = {"Southeast Pashai", "Southeast Pashayi"}, ["psl"] = {"Puerto Rican Sign Language"}, ["psm"] = {"Pauserna"}, ["psn"] = {"Panasuan"}, ["pso"] = {"Polish Sign Language"}, ["psp"] = {"Philippine Sign Language"}, ["psq"] = {"Pasi"}, ["psr"] = {"Portuguese Sign Language"}, ["pss"] = {"Kaulong"}, ["pst"] = {"Central Pashto"}, ["psu"] = {"Sauraseni Prākrit"}, ["psw"] = {"Port Sandwich"}, ["psy"] = {"Piscataway"}, ["pta"] = {"Pai Tavytera"}, ["pth"] = {"Pataxó Hã-Ha-Hãe"}, ["pti"] = {"Pindiini", "Wangkatha"}, ["ptn"] = {"Patani"}, ["pto"] = {"Zo'é"}, ["ptp"] = {"Patep"}, ["ptq"] = {"Pattapu"}, ["ptr"] = {"Piamatsina"}, ["ptt"] = {"Enrekang"}, ["ptu"] = {"Bambam"}, ["ptv"] = {"Port Vato"}, ["ptw"] = {"Pentlatch"}, ["pty"] = {"Pathiya"}, ["pua"] = {"Western Highland Purepecha"}, ["pub"] = {"Purum"}, ["puc"] = {"Punan Merap"}, ["pud"] = {"Punan Aput"}, ["pue"] = {"Puelche"}, ["puf"] = {"Punan Merah"}, ["pug"] = {"Phuie"}, ["pui"] = {"Puinave"}, ["puj"] = {"Punan Tubu"}, ["pum"] = {"Puma"}, ["puo"] = {"Puoc"}, ["pup"] = {"Pulabu"}, ["puq"] = {"Puquina"}, ["pur"] = {"Puruborá"}, ["put"] = {"Putoh"}, ["puu"] = {"Punu"}, ["puw"] = {"Puluwatese"}, ["pux"] = {"Puare"}, ["puy"] = {"Purisimeño"}, ["pwa"] = {"Pawaia"}, ["pwb"] = {"Panawa"}, ["pwg"] = {"Gapapaiwa"}, ["pwi"] = {"Patwin"}, ["pwm"] = {"Molbog"}, ["pwn"] = {"Paiwan"}, ["pwo"] = {"Pwo Western Karen"}, ["pwr"] = {"Powari"}, ["pww"] = {"Pwo Northern Karen"}, ["pxm"] = {"Quetzaltepec Mixe"}, ["pye"] = {"Pye Krumen"}, ["pym"] = {"Fyam"}, ["pyn"] = {"Poyanáwa"}, ["pys"] = {"Paraguayan Sign Language", "Lengua de Señas del Paraguay"}, ["pyu"] = {"Puyuma"}, ["pyx"] = {"Pyu (Myanmar)"}, ["pyy"] = {"Pyen"}, ["pzh"] = {"Pazeh"}, ["pzn"] = {"Jejara Naga", "Para Naga"}, ["qua"] = {"Quapaw"}, ["qub"] = {"Huallaga Huánuco Quechua"}, ["quc"] = {"K'iche'", "Quiché"}, ["qud"] = {"Calderón Highland Quichua"}, ["quf"] = {"Lambayeque Quechua"}, ["qug"] = {"Chimborazo Highland Quichua"}, ["quh"] = {"South Bolivian Quechua"}, ["qui"] = {"Quileute"}, ["quk"] = {"Chachapoyas Quechua"}, ["qul"] = {"North Bolivian Quechua"}, ["qum"] = {"Sipacapense"}, ["qun"] = {"Quinault"}, ["qup"] = {"Southern Pastaza Quechua"}, ["quq"] = {"Quinqui"}, ["qur"] = {"Yanahuanca Pasco Quechua"}, ["qus"] = {"Santiago del Estero Quichua"}, ["quv"] = {"Sacapulteco"}, ["quw"] = {"Tena Lowland Quichua"}, ["qux"] = {"Yauyos Quechua"}, ["quy"] = {"Ayacucho Quechua"}, ["quz"] = {"Cusco Quechua"}, ["qva"] = {"Ambo-Pasco Quechua"}, ["qvc"] = {"Cajamarca Quechua"}, ["qve"] = {"Eastern Apurímac Quechua"}, ["qvh"] = {"Huamalíes-Dos de Mayo Huánuco Quechua"}, ["qvi"] = {"Imbabura Highland Quichua"}, ["qvj"] = {"Loja Highland Quichua"}, ["qvl"] = {"Cajatambo North Lima Quechua"}, ["qvm"] = {"Margos-Yarowilca-Lauricocha Quechua"}, ["qvn"] = {"North Junín Quechua"}, ["qvo"] = {"Napo Lowland Quechua"}, ["qvp"] = {"Pacaraos Quechua"}, ["qvs"] = {"San Martín Quechua"}, ["qvw"] = {"Huaylla Wanca Quechua"}, ["qvy"] = {"Queyu"}, ["qvz"] = {"Northern Pastaza Quichua"}, ["qwa"] = {"Corongo Ancash Quechua"}, ["qwc"] = {"Classical Quechua"}, ["qwe"] = {"Quechuan (family)"}, ["qwh"] = {"Huaylas Ancash Quechua"}, ["qwm"] = {"Kuman (Russia)"}, ["qws"] = {"Sihuas Ancash Quechua"}, ["qwt"] = {"Kwalhioqua-Tlatskanai"}, ["qxa"] = {"Chiquián Ancash Quechua"}, ["qxc"] = {"Chincha Quechua"}, ["qxh"] = {"Panao Huánuco Quechua"}, ["qxl"] = {"Salasaca Highland Quichua"}, ["qxn"] = {"Northern Conchucos Ancash Quechua"}, ["qxo"] = {"Southern Conchucos Ancash Quechua"}, ["qxp"] = {"Puno Quechua"}, ["qxq"] = {"Qashqa'i"}, ["qxr"] = {"Cañar Highland Quichua"}, ["qxs"] = {"Southern Qiang"}, ["qxt"] = {"Santa Ana de Tusi Pasco Quechua"}, ["qxu"] = {"Arequipa-La Unión Quechua"}, ["qxw"] = {"Jauja Wanca Quechua"}, ["qya"] = {"Quenya"}, ["qyp"] = {"Quiripi"}, ["raa"] = {"Dungmali"}, ["rab"] = {"Camling"}, ["rac"] = {"Rasawa"}, ["rad"] = {"Rade"}, ["raf"] = {"Western Meohang"}, ["rag"] = {"Logooli", "Lulogooli"}, ["rah"] = {"Rabha"}, ["rai"] = {"Ramoaaina"}, ["raj"] = {"Rajasthani"}, ["rak"] = {"Tulu-Bohuai"}, ["ral"] = {"Ralte"}, ["ram"] = {"Canela"}, ["ran"] = {"Riantana"}, ["rao"] = {"Rao"}, ["rap"] = {"Rapanui"}, ["raq"] = {"Saam"}, ["rar"] = {"Rarotongan", "Cook Islands Maori"}, ["ras"] = {"Tegali"}, ["rat"] = {"Razajerdi"}, ["rau"] = {"Raute"}, ["rav"] = {"Sampang"}, ["raw"] = {"Rawang"}, ["rax"] = {"Rang"}, ["ray"] = {"Rapa"}, ["raz"] = {"Rahambuu"}, ["rbb"] = {"Rumai Palaung"}, ["rbk"] = {"Northern Bontok"}, ["rbl"] = {"Miraya Bikol"}, ["rbp"] = {"Barababaraba"}, ["rcf"] = {"Réunion Creole French"}, ["rdb"] = {"Rudbari"}, ["rea"] = {"Rerau"}, ["reb"] = {"Rembong"}, ["ree"] = {"Rejang Kayan"}, ["reg"] = {"Kara (Tanzania)"}, ["rei"] = {"Reli"}, ["rej"] = {"Rejang"}, ["rel"] = {"Rendille"}, ["rem"] = {"Remo"}, ["ren"] = {"Rengao"}, ["rer"] = {"Rer Bare"}, ["res"] = {"Reshe"}, ["ret"] = {"Retta"}, ["rey"] = {"Reyesano"}, ["rga"] = {"Roria"}, ["rge"] = {"Romano-Greek"}, ["rgk"] = {"Rangkas"}, ["rgn"] = {"Romagnol"}, ["rgr"] = {"Resígaro"}, ["rgs"] = {"Southern Roglai"}, ["rgu"] = {"Ringgou"}, ["rhg"] = {"Rohingya"}, ["rhp"] = {"Yahang"}, ["ria"] = {"Riang (India)"}, ["rib"] = {"Bribri Sign Language"}, ["rif"] = {"Tarifit"}, ["ril"] = {"Riang Lang", "Riang (Myanmar)"}, ["rim"] = {"Nyaturu"}, ["rin"] = {"Nungu"}, ["rir"] = {"Ribun"}, ["rit"] = {"Ritharrngu"}, ["riu"] = {"Riung"}, ["rjg"] = {"Rajong"}, ["rji"] = {"Raji"}, ["rjs"] = {"Rajbanshi"}, ["rka"] = {"Kraol"}, ["rkb"] = {"Rikbaktsa"}, ["rkh"] = {"Rakahanga-Manihiki"}, ["rki"] = {"Rakhine"}, ["rkm"] = {"Marka"}, ["rkt"] = {"Rangpuri", "Kamta"}, ["rkw"] = {"Arakwal"}, ["rma"] = {"Rama"}, ["rmb"] = {"Rembarrnga"}, ["rmc"] = {"Carpathian Romani"}, ["rmd"] = {"Traveller Danish"}, ["rme"] = {"Angloromani"}, ["rmf"] = {"Kalo Finnish Romani"}, ["rmg"] = {"Traveller Norwegian"}, ["rmh"] = {"Murkim"}, ["rmi"] = {"Lomavren"}, ["rmk"] = {"Romkun"}, ["rml"] = {"Baltic Romani"}, ["rmm"] = {"Roma"}, ["rmn"] = {"Balkan Romani"}, ["rmo"] = {"Sinte Romani"}, ["rmp"] = {"Rempi"}, ["rmq"] = {"Caló"}, ["rms"] = {"Romanian Sign Language"}, ["rmt"] = {"Domari"}, ["rmu"] = {"Tavringer Romani"}, ["rmv"] = {"Romanova"}, ["rmw"] = {"Welsh Romani"}, ["rmx"] = {"Romam"}, ["rmy"] = {"Vlax Romani"}, ["rmz"] = {"Marma"}, ["rnb"] = {"Brunca Sign Language"}, ["rnd"] = {"Ruund"}, ["rng"] = {"Ronga"}, ["rnl"] = {"Ranglong"}, ["rnn"] = {"Roon"}, ["rnp"] = {"Rongpo"}, ["rnr"] = {"Nari Nari"}, ["rnw"] = {"Rungwa"}, ["roa"] = {"Romance languages"}, ["rob"] = {"Tae'"}, ["roc"] = {"Cacgia Roglai"}, ["rod"] = {"Rogo"}, ["roe"] = {"Ronji"}, ["rof"] = {"Rombo"}, ["rog"] = {"Northern Roglai"}, ["rol"] = {"Romblomanon"}, ["rom"] = {"Romany"}, ["roo"] = {"Rotokas"}, ["rop"] = {"Kriol"}, ["ror"] = {"Rongga"}, ["rou"] = {"Runga"}, ["row"] = {"Dela-Oenale"}, ["rpn"] = {"Repanbitip"}, ["rpt"] = {"Rapting"}, ["rri"] = {"Ririo"}, ["rro"] = {"Waima"}, ["rrt"] = {"Arritinngithigh"}, ["rsb"] = {"Romano-Serbian"}, ["rsk"] = {"Ruthenian", "Rusyn"}, ["rsl"] = {"Russian Sign Language"}, ["rsm"] = {"Miriwoong Sign Language"}, ["rsn"] = {"Rwandan Sign Language"}, ["rtc"] = {"Rungtu Chin"}, ["rth"] = {"Ratahan"}, ["rtm"] = {"Rotuman"}, ["rts"] = {"Yurats"}, ["rtw"] = {"Rathawi"}, ["rub"] = {"Gungu"}, ["ruc"] = {"Ruuli"}, ["rue"] = {"Rusyn"}, ["ruf"] = {"Luguru"}, ["rug"] = {"Roviana"}, ["ruh"] = {"Ruga"}, ["rui"] = {"Rufiji"}, ["ruk"] = {"Che"}, ["ruo"] = {"Istro Romanian"}, ["rup"] = {"Macedo-Romanian", "Aromanian", "Arumanian"}, ["ruq"] = {"Megleno Romanian"}, ["rut"] = {"Rutul"}, ["ruu"] = {"Lanas Lobu"}, ["ruy"] = {"Mala (Nigeria)"}, ["ruz"] = {"Ruma"}, ["rwa"] = {"Rawo"}, ["rwk"] = {"Rwa"}, ["rwl"] = {"Ruwila"}, ["rwm"] = {"Amba (Uganda)"}, ["rwo"] = {"Rawa"}, ["rwr"] = {"Marwari (India)"}, ["rxd"] = {"Ngardi"}, ["rxw"] = {"Karuwali", "Garuwali"}, ["ryn"] = {"Northern Amami-Oshima"}, ["rys"] = {"Yaeyama"}, ["ryu"] = {"Central Okinawan"}, ["rzh"] = {"Rāziḥī"}, ["saa"] = {"Saba"}, ["sab"] = {"Buglere"}, ["sac"] = {"Meskwaki"}, ["sad"] = {"Sandawe"}, ["sae"] = {"Sabanê"}, ["saf"] = {"Safaliba"}, ["sah"] = {"Yakut"}, ["sai"] = {"South American Indian languages"}, ["saj"] = {"Sahu"}, ["sak"] = {"Sake"}, ["sal"] = {"Salishan languages"}, ["sam"] = {"Samaritan Aramaic"}, ["sao"] = {"Sause"}, ["saq"] = {"Samburu"}, ["sar"] = {"Saraveca"}, ["sas"] = {"Sasak"}, ["sat"] = {"Santali"}, ["sau"] = {"Saleman"}, ["sav"] = {"Saafi-Saafi"}, ["saw"] = {"Sawi"}, ["sax"] = {"Sa"}, ["say"] = {"Saya"}, ["saz"] = {"Saurashtra"}, ["sba"] = {"Ngambay"}, ["sbb"] = {"Simbo"}, ["sbc"] = {"Kele (Papua New Guinea)"}, ["sbd"] = {"Southern Samo"}, ["sbe"] = {"Saliba"}, ["sbf"] = {"Chabu", "Shabo"}, ["sbg"] = {"Seget"}, ["sbh"] = {"Sori-Harengan"}, ["sbi"] = {"Seti"}, ["sbj"] = {"Surbakhal"}, ["sbk"] = {"Safwa"}, ["sbl"] = {"Botolan Sambal"}, ["sbm"] = {"Sagala"}, ["sbn"] = {"Sindhi Bhil"}, ["sbo"] = {"Sabüm"}, ["sbp"] = {"Sangu (Tanzania)"}, ["sbq"] = {"Sileibi"}, ["sbr"] = {"Sembakung Murut"}, ["sbs"] = {"Subiya"}, ["sbt"] = {"Kimki"}, ["sbu"] = {"Stod Bhoti"}, ["sbv"] = {"Sabine"}, ["sbw"] = {"Simba"}, ["sbx"] = {"Seberuang"}, ["sby"] = {"Soli"}, ["sbz"] = {"Sara Kaba"}, ["scb"] = {"Chut"}, ["sce"] = {"Dongxiang"}, ["scf"] = {"San Miguel Creole French"}, ["scg"] = {"Sanggau"}, ["sch"] = {"Sakachep"}, ["sci"] = {"Sri Lankan Creole Malay"}, ["sck"] = {"Sadri"}, ["scl"] = {"Shina"}, ["scn"] = {"Sicilian"}, ["sco"] = {"Scots"}, ["scp"] = {"Hyolmo", "Helambu Sherpa"}, ["scq"] = {"Sa'och"}, ["scs"] = {"North Slavey"}, ["sct"] = {"Southern Katang"}, ["scu"] = {"Shumcho"}, ["scv"] = {"Sheni"}, ["scw"] = {"Sha"}, ["scx"] = {"Sicel"}, ["sda"] = {"Toraja-Sa'dan"}, ["sdb"] = {"Shabak"}, ["sdc"] = {"Sassarese Sardinian"}, ["sde"] = {"Surubu"}, ["sdf"] = {"Sarli"}, ["sdg"] = {"Savi"}, ["sdh"] = {"Southern Kurdish"}, ["sdj"] = {"Suundi"}, ["sdk"] = {"Sos Kundi"}, ["sdl"] = {"Saudi Arabian Sign Language"}, ["sdn"] = {"Gallurese Sardinian"}, ["sdo"] = {"Bukar-Sadung Bidayuh"}, ["sdp"] = {"Sherdukpen"}, ["sdq"] = {"Semandang"}, ["sdr"] = {"Oraon Sadri"}, ["sds"] = {"Sened"}, ["sdt"] = {"Shuadit"}, ["sdu"] = {"Sarudu"}, ["sdv"] = {"Eastern Sudanic languages"}, ["sdx"] = {"Sibu Melanau"}, ["sdz"] = {"Sallands"}, ["sea"] = {"Semai"}, ["seb"] = {"Shempire Senoufo"}, ["sec"] = {"Sechelt"}, ["sed"] = {"Sedang"}, ["see"] = {"Seneca"}, ["sef"] = {"Cebaara Senoufo"}, ["seg"] = {"Segeju"}, ["seh"] = {"Sena"}, ["sei"] = {"Seri"}, ["sej"] = {"Sene"}, ["sek"] = {"Sekani"}, ["sel"] = {"Selkup"}, ["sem"] = {"Semitic languages"}, ["sen"] = {"Nanerigé Sénoufo"}, ["seo"] = {"Suarmin"}, ["sep"] = {"Sìcìté Sénoufo"}, ["seq"] = {"Senara Sénoufo"}, ["ser"] = {"Serrano"}, ["ses"] = {"Koyraboro Senni Songhai"}, ["set"] = {"Sentani"}, ["seu"] = {"Serui-Laut"}, ["sev"] = {"Nyarafolo Senoufo"}, ["sew"] = {"Sewa Bay"}, ["sey"] = {"Secoya"}, ["sez"] = {"Senthang Chin"}, ["sfb"] = {"Langue des signes de Belgique Francophone", "French Belgian Sign Language"}, ["sfe"] = {"Eastern Subanen"}, ["sfm"] = {"Small Flowery Miao"}, ["sfs"] = {"South African Sign Language"}, ["sfw"] = {"Sehwi"}, ["sga"] = {"Old Irish (to 900)"}, ["sgb"] = {"Mag-antsi Ayta"}, ["sgc"] = {"Kipsigis"}, ["sgd"] = {"Surigaonon"}, ["sge"] = {"Segai"}, ["sgg"] = {"Swiss-German Sign Language"}, ["sgh"] = {"Shughni"}, ["sgi"] = {"Suga"}, ["sgj"] = {"Surgujia"}, ["sgk"] = {"Sangkong"}, ["sgm"] = {"Singa"}, ["sgn"] = {"Sign languages"}, ["sgp"] = {"Singpho"}, ["sgr"] = {"Sangisari"}, ["sgs"] = {"Samogitian"}, ["sgt"] = {"Brokpake"}, ["sgu"] = {"Salas"}, ["sgw"] = {"Sebat Bet Gurage"}, ["sgx"] = {"Sierra Leone Sign Language"}, ["sgy"] = {"Sanglechi"}, ["sgz"] = {"Sursurunga"}, ["sha"] = {"Shall-Zwall"}, ["shb"] = {"Ninam"}, ["shc"] = {"Sonde"}, ["shd"] = {"Kundal Shahi"}, ["she"] = {"Sheko"}, ["shg"] = {"Shua"}, ["shh"] = {"Shoshoni"}, ["shi"] = {"Tachelhit"}, ["shj"] = {"Shatt"}, ["shk"] = {"Shilluk"}, ["shl"] = {"Shendu"}, ["shm"] = {"Shahrudi"}, ["shn"] = {"Shan"}, ["sho"] = {"Shanga"}, ["shp"] = {"Shipibo-Conibo"}, ["shq"] = {"Sala"}, ["shr"] = {"Shi"}, ["shs"] = {"Shuswap"}, ["sht"] = {"Shasta"}, ["shu"] = {"Chadian Arabic"}, ["shv"] = {"Shehri"}, ["shw"] = {"Shwai"}, ["shx"] = {"She"}, ["shy"] = {"Tachawit"}, ["shz"] = {"Syenara Senoufo"}, ["sia"] = {"Akkala Sami"}, ["sib"] = {"Sebop"}, ["sid"] = {"Sidamo"}, ["sie"] = {"Simaa"}, ["sif"] = {"Siamou"}, ["sig"] = {"Paasaal"}, ["sih"] = {"Zire", "Sîshëë"}, ["sii"] = {"Shom Peng"}, ["sij"] = {"Numbami"}, ["sik"] = {"Sikiana"}, ["sil"] = {"Tumulung Sisaala"}, ["sim"] = {"Mende (Papua New Guinea)"}, ["sio"] = {"Siouan languages"}, ["sip"] = {"Sikkimese"}, ["siq"] = {"Sonia"}, ["sir"] = {"Siri"}, ["sis"] = {"Siuslaw"}, ["sit"] = {"Sino-Tibetan languages"}, ["siu"] = {"Sinagen"}, ["siv"] = {"Sumariup"}, ["siw"] = {"Siwai"}, ["six"] = {"Sumau"}, ["siy"] = {"Sivandi"}, ["siz"] = {"Siwi"}, ["sja"] = {"Epena"}, ["sjb"] = {"Sajau Basap"}, ["sjd"] = {"Kildin Sami"}, ["sje"] = {"Pite Sami"}, ["sjg"] = {"Assangori"}, ["sjk"] = {"Kemi Sami"}, ["sjl"] = {"Sajalong", "Miji"}, ["sjm"] = {"Mapun"}, ["sjn"] = {"Sindarin"}, ["sjo"] = {"Xibe"}, ["sjp"] = {"Surjapuri"}, ["sjr"] = {"Siar-Lak"}, ["sjs"] = {"Senhaja De Srair"}, ["sjt"] = {"Ter Sami"}, ["sju"] = {"Ume Sami"}, ["sjw"] = {"Shawnee"}, ["ska"] = {"Skagit"}, ["skb"] = {"Saek"}, ["skc"] = {"Ma Manda"}, ["skd"] = {"Southern Sierra Miwok"}, ["ske"] = {"Seke (Vanuatu)"}, ["skf"] = {"Sakirabiá"}, ["skg"] = {"Sakalava Malagasy"}, ["skh"] = {"Sikule"}, ["ski"] = {"Sika"}, ["skj"] = {"Seke (Nepal)"}, ["skm"] = {"Kutong"}, ["skn"] = {"Kolibugan Subanon"}, ["sko"] = {"Seko Tengah"}, ["skp"] = {"Sekapan"}, ["skq"] = {"Sininkere"}, ["skr"] = {"Saraiki", "Seraiki"}, ["sks"] = {"Maia"}, ["skt"] = {"Sakata"}, ["sku"] = {"Sakao"}, ["skv"] = {"Skou"}, ["skw"] = {"Skepi Creole Dutch"}, ["skx"] = {"Seko Padang"}, ["sky"] = {"Sikaiana"}, ["skz"] = {"Sekar"}, ["sla"] = {"Slavic languages"}, ["slc"] = {"Sáliba"}, ["sld"] = {"Sissala"}, ["sle"] = {"Sholaga"}, ["slf"] = {"Swiss-Italian Sign Language"}, ["slg"] = {"Selungai Murut"}, ["slh"] = {"Southern Puget Sound Salish"}, ["sli"] = {"Lower Silesian"}, ["slj"] = {"Salumá"}, ["sll"] = {"Salt-Yui"}, ["slm"] = {"Pangutaran Sama"}, ["sln"] = {"Salinan"}, ["slp"] = {"Lamaholot"}, ["slq"] = {"Salchuq"}, ["slr"] = {"Salar"}, ["sls"] = {"Singapore Sign Language"}, ["slt"] = {"Sila"}, ["slu"] = {"Selaru"}, ["slw"] = {"Sialum"}, ["slx"] = {"Salampasu"}, ["sly"] = {"Selayar"}, ["slz"] = {"Ma'ya"}, ["sma"] = {"Southern Sami"}, ["smb"] = {"Simbari"}, ["smc"] = {"Som"}, ["smf"] = {"Auwe"}, ["smg"] = {"Simbali"}, ["smh"] = {"Samei"}, ["smi"] = {"Sami languages"}, ["smj"] = {"Lule Sami"}, ["smk"] = {"Bolinao"}, ["sml"] = {"Central Sama"}, ["smm"] = {"Musasa"}, ["smn"] = {"Inari Sami"}, ["smp"] = {"Samaritan"}, ["smq"] = {"Samo"}, ["smr"] = {"Simeulue"}, ["sms"] = {"Skolt Sami"}, ["smt"] = {"Simte"}, ["smu"] = {"Somray"}, ["smv"] = {"Samvedi"}, ["smw"] = {"Sumbawa"}, ["smx"] = {"Samba"}, ["smy"] = {"Semnani"}, ["smz"] = {"Simeku"}, ["snc"] = {"Sinaugoro"}, ["sne"] = {"Bau Bidayuh"}, ["snf"] = {"Noon"}, ["sng"] = {"Sanga (Democratic Republic of Congo)"}, ["sni"] = {"Sensi"}, ["snj"] = {"Riverain Sango"}, ["snk"] = {"Soninke"}, ["snl"] = {"Sangil"}, ["snm"] = {"Southern Ma'di"}, ["snn"] = {"Siona"}, ["sno"] = {"Snohomish"}, ["snp"] = {"Siane"}, ["snq"] = {"Sangu (Gabon)"}, ["snr"] = {"Sihan"}, ["sns"] = {"South West Bay", "Nahavaq"}, ["snu"] = {"Senggi", "Viid"}, ["snv"] = {"Sa'ban"}, ["snw"] = {"Selee"}, ["snx"] = {"Sam"}, ["sny"] = {"Saniyo-Hiyewe"}, ["snz"] = {"Kou"}, ["soa"] = {"Thai Song"}, ["sob"] = {"Sobei"}, ["soc"] = {"So (Democratic Republic of Congo)"}, ["sod"] = {"Songoora"}, ["soe"] = {"Songomeno"}, ["sog"] = {"Sogdian"}, ["soh"] = {"Aka"}, ["soi"] = {"Sonha"}, ["soj"] = {"Soi"}, ["sok"] = {"Sokoro"}, ["sol"] = {"Solos"}, ["son"] = {"Songhai languages"}, ["soo"] = {"Songo"}, ["sop"] = {"Songe"}, ["soq"] = {"Kanasi"}, ["sor"] = {"Somrai"}, ["sos"] = {"Seeku"}, ["sou"] = {"Southern Thai"}, ["sov"] = {"Sonsorol"}, ["sow"] = {"Sowanda"}, ["sox"] = {"Swo"}, ["soy"] = {"Miyobe"}, ["soz"] = {"Temi"}, ["spb"] = {"Sepa (Indonesia)"}, ["spc"] = {"Sapé"}, ["spd"] = {"Saep"}, ["spe"] = {"Sepa (Papua New Guinea)"}, ["spg"] = {"Sian"}, ["spi"] = {"Saponi"}, ["spk"] = {"Sengo"}, ["spl"] = {"Selepet"}, ["spm"] = {"Akukem"}, ["spn"] = {"Sanapaná"}, ["spo"] = {"Spokane"}, ["spp"] = {"Supyire Senoufo"}, ["spq"] = {"Loreto-Ucayali Spanish"}, ["spr"] = {"Saparua"}, ["sps"] = {"Saposa"}, ["spt"] = {"Spiti Bhoti"}, ["spu"] = {"Sapuan"}, ["spv"] = {"Sambalpuri", "Kosli"}, ["spx"] = {"South Picene"}, ["spy"] = {"Sabaot"}, ["sqa"] = {"Shama-Sambuga"}, ["sqh"] = {"Shau"}, ["sqj"] = {"Albanian languages"}, ["sqk"] = {"Albanian Sign Language"}, ["sqm"] = {"Suma"}, ["sqn"] = {"Susquehannock"}, ["sqo"] = {"Sorkhei"}, ["sqq"] = {"Sou"}, ["sqr"] = {"Siculo Arabic"}, ["sqs"] = {"Sri Lankan Sign Language"}, ["sqt"] = {"Soqotri"}, ["squ"] = {"Squamish"}, ["sqx"] = {"Kufr Qassem Sign Language (KQSL)"}, ["sra"] = {"Saruga"}, ["srb"] = {"Sora"}, ["src"] = {"Logudorese Sardinian"}, ["sre"] = {"Sara"}, ["srf"] = {"Nafi"}, ["srg"] = {"Sulod"}, ["srh"] = {"Sarikoli"}, ["sri"] = {"Siriano"}, ["srk"] = {"Serudung Murut"}, ["srl"] = {"Isirawa"}, ["srm"] = {"Saramaccan"}, ["srn"] = {"Sranan Tongo"}, ["sro"] = {"Campidanese Sardinian"}, ["srq"] = {"Sirionó"}, ["srr"] = {"Serer"}, ["srs"] = {"Sarsi"}, ["srt"] = {"Sauri"}, ["sru"] = {"Suruí"}, ["srv"] = {"Southern Sorsoganon"}, ["srw"] = {"Serua"}, ["srx"] = {"Sirmauri"}, ["sry"] = {"Sera"}, ["srz"] = {"Shahmirzadi"}, ["ssa"] = {"Nilo-Saharan languages"}, ["ssb"] = {"Southern Sama"}, ["ssc"] = {"Suba-Simbiti"}, ["ssd"] = {"Siroi"}, ["sse"] = {"Balangingi", "Bangingih Sama"}, ["ssf"] = {"Thao"}, ["ssg"] = {"Seimat"}, ["ssh"] = {"Shihhi Arabic"}, ["ssi"] = {"Sansi"}, ["ssj"] = {"Sausi"}, ["ssk"] = {"Sunam"}, ["ssl"] = {"Western Sisaala"}, ["ssm"] = {"Semnam"}, ["ssn"] = {"Waata"}, ["sso"] = {"Sissano"}, ["ssp"] = {"Spanish Sign Language"}, ["ssq"] = {"So'a"}, ["ssr"] = {"Swiss-French Sign Language"}, ["sss"] = {"Sô"}, ["sst"] = {"Sinasina"}, ["ssu"] = {"Susuami"}, ["ssv"] = {"Shark Bay"}, ["ssx"] = {"Samberigi"}, ["ssy"] = {"Saho"}, ["ssz"] = {"Sengseng"}, ["sta"] = {"Settla"}, ["stb"] = {"Northern Subanen"}, ["std"] = {"Sentinel"}, ["ste"] = {"Liana-Seti"}, ["stf"] = {"Seta"}, ["stg"] = {"Trieng"}, ["sth"] = {"Shelta"}, ["sti"] = {"Bulo Stieng"}, ["stj"] = {"Matya Samo"}, ["stk"] = {"Arammba"}, ["stl"] = {"Stellingwerfs"}, ["stm"] = {"Setaman"}, ["stn"] = {"Owa"}, ["sto"] = {"Stoney"}, ["stp"] = {"Southeastern Tepehuan"}, ["stq"] = {"Saterfriesisch"}, ["str"] = {"Straits Salish"}, ["sts"] = {"Shumashti"}, ["stt"] = {"Budeh Stieng"}, ["stu"] = {"Samtao"}, ["stv"] = {"Silt'e"}, ["stw"] = {"Satawalese"}, ["sty"] = {"Siberian Tatar"}, ["sua"] = {"Sulka"}, ["sub"] = {"Suku"}, ["suc"] = {"Western Subanon"}, ["sue"] = {"Suena"}, ["sug"] = {"Suganga"}, ["sui"] = {"Suki"}, ["suj"] = {"Shubi"}, ["suk"] = {"Sukuma"}, ["suo"] = {"Bouni"}, ["suq"] = {"Tirmaga-Chai Suri", "Suri"}, ["sur"] = {"Mwaghavul"}, ["sus"] = {"Susu"}, ["sut"] = {"Subtiaba"}, ["suv"] = {"Puroik"}, ["suw"] = {"Sumbwa"}, ["sux"] = {"Sumerian"}, ["suy"] = {"Suyá"}, ["suz"] = {"Sunwar"}, ["sva"] = {"Svan"}, ["svb"] = {"Ulau-Suain"}, ["svc"] = {"Vincentian Creole English"}, ["sve"] = {"Serili"}, ["svk"] = {"Slovakian Sign Language"}, ["svm"] = {"Slavomolisano"}, ["svs"] = {"Savosavo"}, ["svx"] = {"Skalvian"}, ["swb"] = {"Maore Comorian"}, ["swc"] = {"Congo Swahili"}, ["swf"] = {"Sere"}, ["swg"] = {"Swabian"}, ["swh"] = {"Swahili (individual language)", "Kiswahili"}, ["swi"] = {"Sui"}, ["swj"] = {"Sira"}, ["swk"] = {"Malawi Sena"}, ["swl"] = {"Swedish Sign Language"}, ["swm"] = {"Samosa"}, ["swn"] = {"Sawknah"}, ["swo"] = {"Shanenawa"}, ["swp"] = {"Suau"}, ["swq"] = {"Sharwa"}, ["swr"] = {"Saweru"}, ["sws"] = {"Seluwasan"}, ["swt"] = {"Sawila"}, ["swu"] = {"Suwawa"}, ["swv"] = {"Shekhawati"}, ["sww"] = {"Sowa"}, ["swx"] = {"Suruahá"}, ["swy"] = {"Sarua"}, ["sxb"] = {"Suba"}, ["sxc"] = {"Sicanian"}, ["sxe"] = {"Sighu"}, ["sxg"] = {"Shuhi", "Shixing"}, ["sxk"] = {"Southern Kalapuya"}, ["sxl"] = {"Selian"}, ["sxm"] = {"Samre"}, ["sxn"] = {"Sangir"}, ["sxo"] = {"Sorothaptic"}, ["sxr"] = {"Saaroa"}, ["sxs"] = {"Sasaru"}, ["sxu"] = {"Upper Saxon"}, ["sxw"] = {"Saxwe Gbe"}, ["sya"] = {"Siang"}, ["syb"] = {"Central Subanen"}, ["syc"] = {"Classical Syriac"}, ["syd"] = {"Samoyedic languages"}, ["syi"] = {"Seki"}, ["syk"] = {"Sukur"}, ["syl"] = {"Sylheti"}, ["sym"] = {"Maya Samo"}, ["syn"] = {"Senaya"}, ["syo"] = {"Suoy"}, ["syr"] = {"Syriac"}, ["sys"] = {"Sinyar"}, ["syw"] = {"Kagate"}, ["syx"] = {"Samay"}, ["syy"] = {"Al-Sayyid Bedouin Sign Language"}, ["sza"] = {"Semelai"}, ["szb"] = {"Ngalum"}, ["szc"] = {"Semaq Beri"}, ["szd"] = {"Seru"}, ["sze"] = {"Seze"}, ["szg"] = {"Sengele"}, ["szl"] = {"Silesian"}, ["szn"] = {"Sula"}, ["szp"] = {"Suabo"}, ["szs"] = {"Solomon Islands Sign Language"}, ["szv"] = {"Isu (Fako Division)"}, ["szw"] = {"Sawai"}, ["szy"] = {"Sakizaya"}, ["taa"] = {"Lower Tanana"}, ["tab"] = {"Tabassaran"}, ["tac"] = {"Lowland Tarahumara"}, ["tad"] = {"Tause"}, ["tae"] = {"Tariana"}, ["taf"] = {"Tapirapé"}, ["tag"] = {"Tagoi"}, ["tai"] = {"Tai languages"}, ["taj"] = {"Eastern Tamang"}, ["tak"] = {"Tala"}, ["tal"] = {"Tal"}, ["tan"] = {"Tangale"}, ["tao"] = {"Yami"}, ["tap"] = {"Taabwa"}, ["taq"] = {"Tamasheq"}, ["tar"] = {"Central Tarahumara"}, ["tas"] = {"Tay Boi"}, ["tau"] = {"Upper Tanana"}, ["tav"] = {"Tatuyo"}, ["taw"] = {"Tai"}, ["tax"] = {"Tamki"}, ["tay"] = {"Atayal"}, ["taz"] = {"Tocho"}, ["tba"] = {"Aikanã"}, ["tbc"] = {"Takia"}, ["tbd"] = {"Kaki Ae"}, ["tbe"] = {"Tanimbili"}, ["tbf"] = {"Mandara"}, ["tbg"] = {"North Tairora"}, ["tbh"] = {"Dharawal", "Thurawal"}, ["tbi"] = {"Gaam"}, ["tbj"] = {"Tiang"}, ["tbk"] = {"Calamian Tagbanwa"}, ["tbl"] = {"Tboli"}, ["tbm"] = {"Tagbu"}, ["tbn"] = {"Barro Negro Tunebo"}, ["tbo"] = {"Tawala"}, ["tbp"] = {"Taworta", "Diebroud"}, ["tbq"] = {"Tibeto-Burman languages"}, ["tbr"] = {"Tumtum"}, ["tbs"] = {"Tanguat"}, ["tbt"] = {"Tembo (Kitembo)"}, ["tbu"] = {"Tubar"}, ["tbv"] = {"Tobo"}, ["tbw"] = {"Tagbanwa"}, ["tbx"] = {"Kapin"}, ["tby"] = {"Tabaru"}, ["tbz"] = {"Ditammari"}, ["tca"] = {"Ticuna"}, ["tcb"] = {"Tanacross"}, ["tcc"] = {"Datooga"}, ["tcd"] = {"Tafi"}, ["tce"] = {"Southern Tutchone"}, ["tcf"] = {"Malinaltepec Me'phaa", "Malinaltepec Tlapanec"}, ["tcg"] = {"Tamagario"}, ["tch"] = {"Turks And Caicos Creole English"}, ["tci"] = {"Wára"}, ["tck"] = {"Tchitchege"}, ["tcl"] = {"Taman (Myanmar)"}, ["tcm"] = {"Tanahmerah"}, ["tcn"] = {"Tichurong"}, ["tco"] = {"Taungyo"}, ["tcp"] = {"Tawr Chin"}, ["tcq"] = {"Kaiy"}, ["tcs"] = {"Torres Strait Creole", "Yumplatok"}, ["tct"] = {"T'en"}, ["tcu"] = {"Southeastern Tarahumara"}, ["tcw"] = {"Tecpatlán Totonac"}, ["tcx"] = {"Toda"}, ["tcy"] = {"Tulu"}, ["tcz"] = {"Thado Chin"}, ["tda"] = {"Tagdal"}, ["tdb"] = {"Panchpargania"}, ["tdc"] = {"Emberá-Tadó"}, ["tdd"] = {"Tai Nüa"}, ["tde"] = {"Tiranige Diga Dogon"}, ["tdf"] = {"Talieng"}, ["tdg"] = {"Western Tamang"}, ["tdh"] = {"Thulung"}, ["tdi"] = {"Tomadino"}, ["tdj"] = {"Tajio"}, ["tdk"] = {"Tambas"}, ["tdl"] = {"Sur"}, ["tdm"] = {"Taruma"}, ["tdn"] = {"Tondano"}, ["tdo"] = {"Teme"}, ["tdq"] = {"Tita"}, ["tdr"] = {"Todrah"}, ["tds"] = {"Doutai"}, ["tdt"] = {"Tetun Dili"}, ["tdv"] = {"Toro"}, ["tdx"] = {"Tandroy-Mahafaly Malagasy"}, ["tdy"] = {"Tadyawan"}, ["tea"] = {"Temiar"}, ["teb"] = {"Tetete"}, ["tec"] = {"Terik"}, ["ted"] = {"Tepo Krumen"}, ["tee"] = {"Huehuetla Tepehua"}, ["tef"] = {"Teressa"}, ["teg"] = {"Teke-Tege"}, ["teh"] = {"Tehuelche"}, ["tei"] = {"Torricelli"}, ["tek"] = {"Ibali Teke"}, ["tem"] = {"Timne"}, ["ten"] = {"Tama (Colombia)"}, ["teo"] = {"Teso"}, ["tep"] = {"Tepecano"}, ["teq"] = {"Temein"}, ["ter"] = {"Tereno"}, ["tes"] = {"Tengger"}, ["tet"] = {"Tetum"}, ["teu"] = {"Soo"}, ["tev"] = {"Teor"}, ["tew"] = {"Tewa (USA)"}, ["tex"] = {"Tennet"}, ["tey"] = {"Tulishi"}, ["tez"] = {"Tetserret"}, ["tfi"] = {"Tofin Gbe"}, ["tfn"] = {"Tanaina"}, ["tfo"] = {"Tefaro"}, ["tfr"] = {"Teribe"}, ["tft"] = {"Ternate"}, ["tga"] = {"Sagalla"}, ["tgb"] = {"Tobilung"}, ["tgc"] = {"Tigak"}, ["tgd"] = {"Ciwogai"}, ["tge"] = {"Eastern Gorkha Tamang"}, ["tgf"] = {"Chalikha"}, ["tgh"] = {"Tobagonian Creole English"}, ["tgi"] = {"Lawunuia"}, ["tgj"] = {"Tagin"}, ["tgn"] = {"Tandaganon"}, ["tgo"] = {"Sudest"}, ["tgp"] = {"Tangoa"}, ["tgq"] = {"Tring"}, ["tgr"] = {"Tareng"}, ["tgs"] = {"Nume"}, ["tgt"] = {"Central Tagbanwa"}, ["tgu"] = {"Tanggu"}, ["tgv"] = {"Tingui-Boto"}, ["tgw"] = {"Tagwana Senoufo"}, ["tgx"] = {"Tagish"}, ["tgy"] = {"Togoyo"}, ["tgz"] = {"Tagalaka"}, ["thd"] = {"Kuuk Thaayorre", "Thayore"}, ["the"] = {"Chitwania Tharu"}, ["thf"] = {"Thangmi"}, ["thh"] = {"Northern Tarahumara"}, ["thi"] = {"Tai Long"}, ["thk"] = {"Tharaka", "Kitharaka"}, ["thl"] = {"Dangaura Tharu"}, ["thm"] = {"Aheu"}, ["thn"] = {"Thachanadan"}, ["thp"] = {"Thompson"}, ["thq"] = {"Kochila Tharu"}, ["thr"] = {"Rana Tharu"}, ["ths"] = {"Thakali"}, ["tht"] = {"Tahltan"}, ["thu"] = {"Thuri"}, ["thv"] = {"Tahaggart Tamahaq"}, ["thy"] = {"Tha"}, ["thz"] = {"Tayart Tamajeq"}, ["tia"] = {"Tidikelt Tamazight"}, ["tic"] = {"Tira"}, ["tif"] = {"Tifal"}, ["tig"] = {"Tigre"}, ["tih"] = {"Timugon Murut"}, ["tii"] = {"Tiene"}, ["tij"] = {"Tilung"}, ["tik"] = {"Tikar"}, ["til"] = {"Tillamook"}, ["tim"] = {"Timbe"}, ["tin"] = {"Tindi"}, ["tio"] = {"Teop"}, ["tip"] = {"Trimuris"}, ["tiq"] = {"Tiéfo"}, ["tis"] = {"Masadiit Itneg"}, ["tit"] = {"Tinigua"}, ["tiu"] = {"Adasen"}, ["tiv"] = {"Tiv"}, ["tiw"] = {"Tiwi"}, ["tix"] = {"Southern Tiwa"}, ["tiy"] = {"Tiruray"}, ["tiz"] = {"Tai Hongjin"}, ["tja"] = {"Tajuasohn"}, ["tjg"] = {"Tunjung"}, ["tji"] = {"Northern Tujia"}, ["tjj"] = {"Tjungundji"}, ["tjl"] = {"Tai Laing"}, ["tjm"] = {"Timucua"}, ["tjn"] = {"Tonjon"}, ["tjo"] = {"Temacine Tamazight"}, ["tjp"] = {"Tjupany"}, ["tjs"] = {"Southern Tujia"}, ["tju"] = {"Tjurruru"}, ["tjw"] = {"Djabwurrung"}, ["tka"] = {"Truká"}, ["tkb"] = {"Buksa"}, ["tkd"] = {"Tukudede"}, ["tke"] = {"Takwane"}, ["tkf"] = {"Tukumanféd"}, ["tkg"] = {"Tesaka Malagasy"}, ["tkl"] = {"Tokelau"}, ["tkm"] = {"Takelma"}, ["tkn"] = {"Toku-No-Shima"}, ["tkp"] = {"Tikopia"}, ["tkq"] = {"Tee"}, ["tkr"] = {"Tsakhur"}, ["tks"] = {"Takestani"}, ["tkt"] = {"Kathoriya Tharu"}, ["tku"] = {"Upper Necaxa Totonac"}, ["tkv"] = {"Mur Pano"}, ["tkw"] = {"Teanu"}, ["tkx"] = {"Tangko"}, ["tkz"] = {"Takua"}, ["tla"] = {"Southwestern Tepehuan"}, ["tlb"] = {"Tobelo"}, ["tlc"] = {"Yecuatla Totonac"}, ["tld"] = {"Talaud"}, ["tlf"] = {"Telefol"}, ["tlg"] = {"Tofanma"}, ["tlh"] = {"Klingon", "tlhIngan Hol"}, ["tli"] = {"Tlingit"}, ["tlj"] = {"Talinga-Bwisi"}, ["tlk"] = {"Taloki"}, ["tll"] = {"Tetela"}, ["tlm"] = {"Tolomako"}, ["tln"] = {"Talondo'"}, ["tlo"] = {"Talodi"}, ["tlp"] = {"Filomena Mata-Coahuitlán Totonac"}, ["tlq"] = {"Tai Loi"}, ["tlr"] = {"Talise"}, ["tls"] = {"Tambotalo"}, ["tlt"] = {"Sou Nama", "Teluti"}, ["tlu"] = {"Tulehu"}, ["tlv"] = {"Taliabu"}, ["tlx"] = {"Khehek"}, ["tly"] = {"Talysh"}, ["tma"] = {"Tama (Chad)"}, ["tmb"] = {"Katbol", "Avava"}, ["tmc"] = {"Tumak"}, ["tmd"] = {"Haruai"}, ["tme"] = {"Tremembé"}, ["tmf"] = {"Toba-Maskoy"}, ["tmg"] = {"Ternateño"}, ["tmh"] = {"Tamashek"}, ["tmi"] = {"Tutuba"}, ["tmj"] = {"Samarokena"}, ["tmk"] = {"Northwestern Tamang"}, ["tml"] = {"Tamnim Citak"}, ["tmm"] = {"Tai Thanh"}, ["tmn"] = {"Taman (Indonesia)"}, ["tmo"] = {"Temoq"}, ["tmq"] = {"Tumleo"}, ["tmr"] = {"Jewish Babylonian Aramaic (ca. 200-1200 CE)"}, ["tms"] = {"Tima"}, ["tmt"] = {"Tasmate"}, ["tmu"] = {"Iau"}, ["tmv"] = {"Tembo (Motembo)"}, ["tmw"] = {"Temuan"}, ["tmy"] = {"Tami"}, ["tmz"] = {"Tamanaku"}, ["tna"] = {"Tacana"}, ["tnb"] = {"Western Tunebo"}, ["tnc"] = {"Tanimuca-Retuarã"}, ["tnd"] = {"Angosturas Tunebo"}, ["tng"] = {"Tobanga"}, ["tnh"] = {"Maiani"}, ["tni"] = {"Tandia"}, ["tnk"] = {"Kwamera"}, ["tnl"] = {"Lenakel"}, ["tnm"] = {"Tabla"}, ["tnn"] = {"North Tanna"}, ["tno"] = {"Toromono"}, ["tnp"] = {"Whitesands"}, ["tnq"] = {"Taino"}, ["tnr"] = {"Ménik"}, ["tns"] = {"Tenis"}, ["tnt"] = {"Tontemboan"}, ["tnu"] = {"Tay Khang"}, ["tnv"] = {"Tangchangya"}, ["tnw"] = {"Tonsawang"}, ["tnx"] = {"Tanema"}, ["tny"] = {"Tongwe"}, ["tnz"] = {"Ten'edn"}, ["tob"] = {"Toba"}, ["toc"] = {"Coyutla Totonac"}, ["tod"] = {"Toma"}, ["tof"] = {"Gizrra"}, ["tog"] = {"Tonga (Nyasa)"}, ["toh"] = {"Gitonga"}, ["toi"] = {"Tonga (Zambia)"}, ["toj"] = {"Tojolabal"}, ["tok"] = {"Toki Pona"}, ["tol"] = {"Tolowa"}, ["tom"] = {"Tombulu"}, ["too"] = {"Xicotepec De Juárez Totonac"}, ["top"] = {"Papantla Totonac"}, ["toq"] = {"Toposa"}, ["tor"] = {"Togbo-Vara Banda"}, ["tos"] = {"Highland Totonac"}, ["tou"] = {"Tho"}, ["tov"] = {"Upper Taromi"}, ["tow"] = {"Jemez"}, ["tox"] = {"Tobian"}, ["toy"] = {"Topoiyo"}, ["toz"] = {"To"}, ["tpa"] = {"Taupota"}, ["tpc"] = {"Azoyú Me'phaa", "Azoyú Tlapanec"}, ["tpe"] = {"Tippera"}, ["tpf"] = {"Tarpia"}, ["tpg"] = {"Kula"}, ["tpi"] = {"Tok Pisin"}, ["tpj"] = {"Tapieté"}, ["tpk"] = {"Tupinikin"}, ["tpl"] = {"Tlacoapa Me'phaa", "Tlacoapa Tlapanec"}, ["tpm"] = {"Tampulma"}, ["tpn"] = {"Tupinambá"}, ["tpo"] = {"Tai Pao"}, ["tpp"] = {"Pisaflores Tepehua"}, ["tpq"] = {"Tukpa"}, ["tpr"] = {"Tuparí"}, ["tpt"] = {"Tlachichilco Tepehua"}, ["tpu"] = {"Tampuan"}, ["tpv"] = {"Tanapag"}, ["tpw"] = {"Tupí"}, ["tpx"] = {"Acatepec Me'phaa", "Acatepec Tlapanec"}, ["tpy"] = {"Trumai"}, ["tpz"] = {"Tinputz"}, ["tqb"] = {"Tembé"}, ["tql"] = {"Lehali"}, ["tqm"] = {"Turumsa"}, ["tqn"] = {"Tenino"}, ["tqo"] = {"Toaripi"}, ["tqp"] = {"Tomoip"}, ["tqq"] = {"Tunni"}, ["tqr"] = {"Torona"}, ["tqt"] = {"Western Totonac"}, ["tqu"] = {"Touo"}, ["tqw"] = {"Tonkawa"}, ["tra"] = {"Tirahi"}, ["trb"] = {"Terebu"}, ["trc"] = {"Copala Triqui"}, ["trd"] = {"Turi"}, ["tre"] = {"East Tarangan"}, ["trf"] = {"Trinidadian Creole English"}, ["trg"] = {"Lishán Didán"}, ["trh"] = {"Turaka"}, ["tri"] = {"Trió"}, ["trj"] = {"Toram"}, ["trk"] = {"Turkic languages"}, ["trl"] = {"Traveller Scottish"}, ["trm"] = {"Tregami"}, ["trn"] = {"Trinitario"}, ["tro"] = {"Tarao Naga"}, ["trp"] = {"Kok Borok"}, ["trq"] = {"San Martín Itunyoso Triqui"}, ["trr"] = {"Taushiro"}, ["trs"] = {"Chicahuaxtla Triqui"}, ["trt"] = {"Tunggare"}, ["tru"] = {"Turoyo", "Surayt"}, ["trv"] = {"Sediq", "Seediq", "Taroko"}, ["trw"] = {"Torwali"}, ["trx"] = {"Tringgus-Sembaan Bidayuh"}, ["try"] = {"Turung"}, ["trz"] = {"Torá"}, ["tsa"] = {"Tsaangi"}, ["tsb"] = {"Tsamai"}, ["tsc"] = {"Tswa"}, ["tsd"] = {"Tsakonian"}, ["tse"] = {"Tunisian Sign Language"}, ["tsg"] = {"Tausug"}, ["tsh"] = {"Tsuvan"}, ["tsi"] = {"Tsimshian"}, ["tsj"] = {"Tshangla"}, ["tsk"] = {"Tseku"}, ["tsl"] = {"Ts'ün-Lao"}, ["tsm"] = {"Turkish Sign Language", "Türk İşaret Dili"}, ["tsp"] = {"Northern Toussian"}, ["tsq"] = {"Thai Sign Language"}, ["tsr"] = {"Akei"}, ["tss"] = {"Taiwan Sign Language"}, ["tst"] = {"Tondi Songway Kiini"}, ["tsu"] = {"Tsou"}, ["tsv"] = {"Tsogo"}, ["tsw"] = {"Tsishingini"}, ["tsx"] = {"Mubami"}, ["tsy"] = {"Tebul Sign Language"}, ["tsz"] = {"Purepecha"}, ["tta"] = {"Tutelo"}, ["ttb"] = {"Gaa"}, ["ttc"] = {"Tektiteko"}, ["ttd"] = {"Tauade"}, ["tte"] = {"Bwanabwana"}, ["ttf"] = {"Tuotomb"}, ["ttg"] = {"Tutong"}, ["tth"] = {"Upper Ta'oih"}, ["tti"] = {"Tobati"}, ["ttj"] = {"Tooro"}, ["ttk"] = {"Totoro"}, ["ttl"] = {"Totela"}, ["ttm"] = {"Northern Tutchone"}, ["ttn"] = {"Towei"}, ["tto"] = {"Lower Ta'oih"}, ["ttp"] = {"Tombelala"}, ["ttq"] = {"Tawallammat Tamajaq"}, ["ttr"] = {"Tera"}, ["tts"] = {"Northeastern Thai"}, ["ttt"] = {"Muslim Tat"}, ["ttu"] = {"Torau"}, ["ttv"] = {"Titan"}, ["ttw"] = {"Long Wat"}, ["tty"] = {"Sikaritai"}, ["ttz"] = {"Tsum"}, ["tua"] = {"Wiarumus"}, ["tub"] = {"Tübatulabal"}, ["tuc"] = {"Mutu"}, ["tud"] = {"Tuxá"}, ["tue"] = {"Tuyuca"}, ["tuf"] = {"Central Tunebo"}, ["tug"] = {"Tunia"}, ["tuh"] = {"Taulil"}, ["tui"] = {"Tupuri"}, ["tuj"] = {"Tugutil"}, ["tul"] = {"Tula"}, ["tum"] = {"Tumbuka"}, ["tun"] = {"Tunica"}, ["tuo"] = {"Tucano"}, ["tup"] = {"Tupi languages"}, ["tuq"] = {"Tedaga"}, ["tus"] = {"Tuscarora"}, ["tut"] = {"Altaic languages"}, ["tuu"] = {"Tututni"}, ["tuv"] = {"Turkana"}, ["tuw"] = {"Tungus languages"}, ["tux"] = {"Tuxináwa"}, ["tuy"] = {"Tugen"}, ["tuz"] = {"Turka"}, ["tva"] = {"Vaghua"}, ["tvd"] = {"Tsuvadi"}, ["tve"] = {"Te'un"}, ["tvk"] = {"Southeast Ambrym"}, ["tvl"] = {"Tuvalu"}, ["tvm"] = {"Tela-Masbuar"}, ["tvn"] = {"Tavoyan"}, ["tvo"] = {"Tidore"}, ["tvs"] = {"Taveta"}, ["tvt"] = {"Tutsa Naga"}, ["tvu"] = {"Tunen"}, ["tvw"] = {"Sedoa"}, ["tvx"] = {"Taivoan"}, ["tvy"] = {"Timor Pidgin"}, ["twa"] = {"Twana"}, ["twb"] = {"Western Tawbuid"}, ["twc"] = {"Teshenawa"}, ["twd"] = {"Twents"}, ["twe"] = {"Tewa (Indonesia)"}, ["twf"] = {"Northern Tiwa"}, ["twg"] = {"Tereweng"}, ["twh"] = {"Tai Dón"}, ["twl"] = {"Tawara"}, ["twm"] = {"Tawang Monpa"}, ["twn"] = {"Twendi"}, ["two"] = {"Tswapong"}, ["twp"] = {"Ere"}, ["twq"] = {"Tasawaq"}, ["twr"] = {"Southwestern Tarahumara"}, ["twt"] = {"Turiwára"}, ["twu"] = {"Termanu"}, ["tww"] = {"Tuwari"}, ["twx"] = {"Tewe"}, ["twy"] = {"Tawoyan"}, ["txa"] = {"Tombonuo"}, ["txb"] = {"Tokharian B"}, ["txc"] = {"Tsetsaut"}, ["txe"] = {"Totoli"}, ["txg"] = {"Tangut"}, ["txh"] = {"Thracian"}, ["txi"] = {"Ikpeng"}, ["txj"] = {"Tarjumo"}, ["txm"] = {"Tomini"}, ["txn"] = {"West Tarangan"}, ["txo"] = {"Toto"}, ["txq"] = {"Tii"}, ["txr"] = {"Tartessian"}, ["txs"] = {"Tonsea"}, ["txt"] = {"Citak"}, ["txu"] = {"Kayapó"}, ["txx"] = {"Tatana"}, ["txy"] = {"Tanosy Malagasy"}, ["tya"] = {"Tauya"}, ["tye"] = {"Kyanga"}, ["tyh"] = {"O'du"}, ["tyi"] = {"Teke-Tsaayi"}, ["tyj"] = {"Tai Do", "Tai Yo"}, ["tyl"] = {"Thu Lao"}, ["tyn"] = {"Kombai"}, ["typ"] = {"Thaypan"}, ["tyr"] = {"Tai Daeng"}, ["tys"] = {"Tày Sa Pa"}, ["tyt"] = {"Tày Tac"}, ["tyu"] = {"Kua"}, ["tyv"] = {"Tuvinian"}, ["tyx"] = {"Teke-Tyee"}, ["tyy"] = {"Tiyaa"}, ["tyz"] = {"Tày"}, ["tza"] = {"Tanzanian Sign Language"}, ["tzh"] = {"Tzeltal"}, ["tzj"] = {"Tz'utujil"}, ["tzl"] = {"Talossan"}, ["tzm"] = {"Central Atlas Tamazight"}, ["tzn"] = {"Tugun"}, ["tzo"] = {"Tzotzil"}, ["tzx"] = {"Tabriak"}, ["uam"] = {"Uamué"}, ["uan"] = {"Kuan"}, ["uar"] = {"Tairuma"}, ["uba"] = {"Ubang"}, ["ubi"] = {"Ubi"}, ["ubl"] = {"Buhi'non Bikol"}, ["ubr"] = {"Ubir"}, ["ubu"] = {"Umbu-Ungu"}, ["uby"] = {"Ubykh"}, ["uda"] = {"Uda"}, ["ude"] = {"Udihe"}, ["udg"] = {"Muduga"}, ["udi"] = {"Udi"}, ["udj"] = {"Ujir"}, ["udl"] = {"Wuzlam"}, ["udm"] = {"Udmurt"}, ["udu"] = {"Uduk"}, ["ues"] = {"Kioko"}, ["ufi"] = {"Ufim"}, ["uga"] = {"Ugaritic"}, ["ugb"] = {"Kuku-Ugbanh"}, ["uge"] = {"Ughele"}, ["ugh"] = {"Kubachi"}, ["ugn"] = {"Ugandan Sign Language"}, ["ugo"] = {"Ugong"}, ["ugy"] = {"Uruguayan Sign Language"}, ["uha"] = {"Uhami"}, ["uhn"] = {"Damal"}, ["uis"] = {"Uisai"}, ["uiv"] = {"Iyive"}, ["uji"] = {"Tanjijili"}, ["uka"] = {"Kaburi"}, ["ukg"] = {"Ukuriguma"}, ["ukh"] = {"Ukhwejo"}, ["uki"] = {"Kui (India)"}, ["ukk"] = {"Muak Sa-aak"}, ["ukl"] = {"Ukrainian Sign Language"}, ["ukp"] = {"Ukpe-Bayobiri"}, ["ukq"] = {"Ukwa"}, ["uks"] = {"Urubú-Kaapor Sign Language", "Kaapor Sign Language"}, ["uku"] = {"Ukue"}, ["ukv"] = {"Kuku"}, ["ukw"] = {"Ukwuani-Aboh-Ndoni"}, ["uky"] = {"Kuuk-Yak"}, ["ula"] = {"Fungwa"}, ["ulb"] = {"Ulukwumi"}, ["ulc"] = {"Ulch"}, ["ule"] = {"Lule"}, ["ulf"] = {"Usku", "Afra"}, ["uli"] = {"Ulithian"}, ["ulk"] = {"Meriam Mir"}, ["ull"] = {"Ullatan"}, ["ulm"] = {"Ulumanda'"}, ["uln"] = {"Unserdeutsch"}, ["ulu"] = {"Uma' Lung"}, ["ulw"] = {"Ulwa"}, ["uma"] = {"Umatilla"}, ["umb"] = {"Umbundu"}, ["umc"] = {"Marrucinian"}, ["umd"] = {"Umbindhamu"}, ["umg"] = {"Morrobalama", "Umbuygamu"}, ["umi"] = {"Ukit"}, ["umm"] = {"Umon"}, ["umn"] = {"Makyan Naga"}, ["umo"] = {"Umotína"}, ["ump"] = {"Umpila"}, ["umr"] = {"Umbugarla"}, ["ums"] = {"Pendau"}, ["umu"] = {"Munsee"}, ["una"] = {"North Watut"}, ["und"] = {"Undetermined"}, ["une"] = {"Uneme"}, ["ung"] = {"Ngarinyin"}, ["uni"] = {"Uni"}, ["unk"] = {"Enawené-Nawé"}, ["unm"] = {"Unami"}, ["unn"] = {"Kurnai"}, ["unr"] = {"Mundari"}, ["unu"] = {"Unubahe"}, ["unx"] = {"Munda"}, ["unz"] = {"Unde Kaili"}, ["uon"] = {"Kulon"}, ["upi"] = {"Umeda"}, ["upv"] = {"Uripiv-Wala-Rano-Atchin"}, ["ura"] = {"Urarina"}, ["urb"] = {"Urubú-Kaapor", "Kaapor"}, ["urc"] = {"Urningangg"}, ["ure"] = {"Uru"}, ["urf"] = {"Uradhi"}, ["urg"] = {"Urigina"}, ["urh"] = {"Urhobo"}, ["uri"] = {"Urim"}, ["urj"] = {"Uralic languages"}, ["urk"] = {"Urak Lawoi'"}, ["url"] = {"Urali"}, ["urm"] = {"Urapmin"}, ["urn"] = {"Uruangnirin"}, ["uro"] = {"Ura (Papua New Guinea)"}, ["urp"] = {"Uru-Pa-In"}, ["urr"] = {"Lehalurup", "Löyöp"}, ["urt"] = {"Urat"}, ["uru"] = {"Urumi"}, ["urv"] = {"Uruava"}, ["urw"] = {"Sop"}, ["urx"] = {"Urimo"}, ["ury"] = {"Orya"}, ["urz"] = {"Uru-Eu-Wau-Wau"}, ["usa"] = {"Usarufa"}, ["ush"] = {"Ushojo"}, ["usi"] = {"Usui"}, ["usk"] = {"Usaghade"}, ["usp"] = {"Uspanteco"}, ["uss"] = {"us-Saare"}, ["usu"] = {"Uya"}, ["uta"] = {"Otank"}, ["ute"] = {"Ute-Southern Paiute"}, ["uth"] = {"ut-Hun"}, ["utp"] = {"Amba (Solomon Islands)"}, ["utr"] = {"Etulo"}, ["utu"] = {"Utu"}, ["uum"] = {"Urum"}, ["uur"] = {"Ura (Vanuatu)"}, ["uuu"] = {"U"}, ["uve"] = {"West Uvean", "Fagauvea"}, ["uvh"] = {"Uri"}, ["uvl"] = {"Lote"}, ["uwa"] = {"Kuku-Uwanh"}, ["uya"] = {"Doko-Uyanga"}, ["uzn"] = {"Northern Uzbek"}, ["uzs"] = {"Southern Uzbek"}, ["vaa"] = {"Vaagri Booli"}, ["vae"] = {"Vale"}, ["vaf"] = {"Vafsi"}, ["vag"] = {"Vagla"}, ["vah"] = {"Varhadi-Nagpuri"}, ["vai"] = {"Vai"}, ["vaj"] = {"Sekele", "Northwestern ǃKung", "Vasekele"}, ["val"] = {"Vehes"}, ["vam"] = {"Vanimo"}, ["van"] = {"Valman"}, ["vao"] = {"Vao"}, ["vap"] = {"Vaiphei"}, ["var"] = {"Huarijio"}, ["vas"] = {"Vasavi"}, ["vau"] = {"Vanuma"}, ["vav"] = {"Varli"}, ["vay"] = {"Wayu"}, ["vbb"] = {"Southeast Babar"}, ["vbk"] = {"Southwestern Bontok"}, ["vec"] = {"Venetian"}, ["ved"] = {"Veddah"}, ["vel"] = {"Veluws"}, ["vem"] = {"Vemgo-Mabas"}, ["veo"] = {"Ventureño"}, ["vep"] = {"Veps"}, ["ver"] = {"Mom Jango"}, ["vgr"] = {"Vaghri"}, ["vgt"] = {"Vlaamse Gebarentaal", "Flemish Sign Language"}, ["vic"] = {"Virgin Islands Creole English"}, ["vid"] = {"Vidunda"}, ["vif"] = {"Vili"}, ["vig"] = {"Viemo"}, ["vil"] = {"Vilela"}, ["vin"] = {"Vinza"}, ["vis"] = {"Vishavan"}, ["vit"] = {"Viti"}, ["viv"] = {"Iduna"}, ["vka"] = {"Kariyarra"}, ["vkj"] = {"Kujarge"}, ["vkk"] = {"Kaur"}, ["vkl"] = {"Kulisusu"}, ["vkm"] = {"Kamakan"}, ["vkn"] = {"Koro Nulu"}, ["vko"] = {"Kodeoha"}, ["vkp"] = {"Korlai Creole Portuguese"}, ["vkt"] = {"Tenggarong Kutai Malay"}, ["vku"] = {"Kurrama"}, ["vkz"] = {"Koro Zuba"}, ["vlp"] = {"Valpei"}, ["vls"] = {"Vlaams"}, ["vma"] = {"Martuyhunira"}, ["vmb"] = {"Barbaram"}, ["vmc"] = {"Juxtlahuaca Mixtec"}, ["vmd"] = {"Mudu Koraga"}, ["vme"] = {"East Masela"}, ["vmf"] = {"Mainfränkisch"}, ["vmg"] = {"Lungalunga"}, ["vmh"] = {"Maraghei"}, ["vmi"] = {"Miwa"}, ["vmj"] = {"Ixtayutla Mixtec"}, ["vmk"] = {"Makhuwa-Shirima"}, ["vml"] = {"Malgana"}, ["vmm"] = {"Mitlatongo Mixtec"}, ["vmp"] = {"Soyaltepec Mazatec"}, ["vmq"] = {"Soyaltepec Mixtec"}, ["vmr"] = {"Marenje"}, ["vms"] = {"Moksela"}, ["vmu"] = {"Muluridyi"}, ["vmv"] = {"Valley Maidu"}, ["vmw"] = {"Makhuwa"}, ["vmx"] = {"Tamazola Mixtec"}, ["vmy"] = {"Ayautla Mazatec"}, ["vmz"] = {"Mazatlán Mazatec"}, ["vnk"] = {"Vano", "Lovono"}, ["vnm"] = {"Vinmavis", "Neve'ei"}, ["vnp"] = {"Vunapu"}, ["vor"] = {"Voro"}, ["vot"] = {"Votic"}, ["vra"] = {"Vera'a"}, ["vro"] = {"Võro"}, ["vrs"] = {"Varisi"}, ["vrt"] = {"Burmbar", "Banam Bay"}, ["vsi"] = {"Moldova Sign Language"}, ["vsl"] = {"Venezuelan Sign Language"}, ["vsv"] = {"Valencian Sign Language", "Llengua de signes valenciana"}, ["vto"] = {"Vitou"}, ["vum"] = {"Vumbu"}, ["vun"] = {"Vunjo"}, ["vut"] = {"Vute"}, ["vwa"] = {"Awa (China)"}, ["waa"] = {"Walla Walla"}, ["wab"] = {"Wab"}, ["wac"] = {"Wasco-Wishram"}, ["wad"] = {"Wamesa", "Wondama"}, ["wae"] = {"Walser"}, ["waf"] = {"Wakoná"}, ["wag"] = {"Wa'ema"}, ["wah"] = {"Watubela"}, ["wai"] = {"Wares"}, ["waj"] = {"Waffa"}, ["wak"] = {"Wakashan languages"}, ["wal"] = {"Wolaytta", "Wolaitta"}, ["wam"] = {"Wampanoag"}, ["wan"] = {"Wan"}, ["wao"] = {"Wappo"}, ["wap"] = {"Wapishana"}, ["waq"] = {"Wagiman"}, ["war"] = {"Waray (Philippines)"}, ["was"] = {"Washo"}, ["wat"] = {"Kaninuwa"}, ["wau"] = {"Waurá"}, ["wav"] = {"Waka"}, ["waw"] = {"Waiwai"}, ["wax"] = {"Watam", "Marangis"}, ["way"] = {"Wayana"}, ["waz"] = {"Wampur"}, ["wba"] = {"Warao"}, ["wbb"] = {"Wabo"}, ["wbe"] = {"Waritai"}, ["wbf"] = {"Wara"}, ["wbh"] = {"Wanda"}, ["wbi"] = {"Vwanji"}, ["wbj"] = {"Alagwa"}, ["wbk"] = {"Waigali"}, ["wbl"] = {"Wakhi"}, ["wbm"] = {"Wa"}, ["wbp"] = {"Warlpiri"}, ["wbq"] = {"Waddar"}, ["wbr"] = {"Wagdi"}, ["wbs"] = {"West Bengal Sign Language"}, ["wbt"] = {"Warnman"}, ["wbv"] = {"Wajarri"}, ["wbw"] = {"Woi"}, ["wca"] = {"Yanomámi"}, ["wci"] = {"Waci Gbe"}, ["wdd"] = {"Wandji"}, ["wdg"] = {"Wadaginam"}, ["wdj"] = {"Wadjiginy"}, ["wdk"] = {"Wadikali"}, ["wdt"] = {"Wendat"}, ["wdu"] = {"Wadjigu"}, ["wdy"] = {"Wadjabangayi"}, ["wea"] = {"Wewaw"}, ["wec"] = {"Wè Western"}, ["wed"] = {"Wedau"}, ["weg"] = {"Wergaia"}, ["weh"] = {"Weh"}, ["wei"] = {"Kiunum"}, ["wem"] = {"Weme Gbe"}, ["wen"] = {"Sorbian languages"}, ["weo"] = {"Wemale"}, ["wep"] = {"Westphalien"}, ["wer"] = {"Weri"}, ["wes"] = {"Cameroon Pidgin"}, ["wet"] = {"Perai"}, ["weu"] = {"Rawngtu Chin"}, ["wew"] = {"Wejewa"}, ["wfg"] = {"Yafi", "Zorop"}, ["wga"] = {"Wagaya"}, ["wgb"] = {"Wagawaga"}, ["wgg"] = {"Wangkangurru", "Wangganguru"}, ["wgi"] = {"Wahgi"}, ["wgo"] = {"Waigeo"}, ["wgu"] = {"Wirangu"}, ["wgy"] = {"Warrgamay"}, ["wha"] = {"Sou Upaa", "Manusela"}, ["whg"] = {"North Wahgi"}, ["whk"] = {"Wahau Kenyah"}, ["whu"] = {"Wahau Kayan"}, ["wib"] = {"Southern Toussian"}, ["wic"] = {"Wichita"}, ["wie"] = {"Wik-Epa"}, ["wif"] = {"Wik-Keyangan"}, ["wig"] = {"Wik Ngathan"}, ["wih"] = {"Wik-Me'anha"}, ["wii"] = {"Minidien"}, ["wij"] = {"Wik-Iiyanh"}, ["wik"] = {"Wikalkan"}, ["wil"] = {"Wilawila"}, ["wim"] = {"Wik-Mungkan"}, ["win"] = {"Ho-Chunk"}, ["wir"] = {"Wiraféd"}, ["wiu"] = {"Wiru"}, ["wiv"] = {"Vitu"}, ["wiy"] = {"Wiyot"}, ["wja"] = {"Waja"}, ["wji"] = {"Warji"}, ["wka"] = {"Kw'adza"}, ["wkb"] = {"Kumbaran"}, ["wkd"] = {"Wakde", "Mo"}, ["wkl"] = {"Kalanadi"}, ["wkr"] = {"Keerray-Woorroong"}, ["wku"] = {"Kunduvadi"}, ["wkw"] = {"Wakawaka"}, ["wky"] = {"Wangkayutyuru"}, ["wla"] = {"Walio"}, ["wlc"] = {"Mwali Comorian"}, ["wle"] = {"Wolane"}, ["wlg"] = {"Kunbarlang"}, ["wlh"] = {"Welaun"}, ["wli"] = {"Waioli"}, ["wlk"] = {"Wailaki"}, ["wll"] = {"Wali (Sudan)"}, ["wlm"] = {"Middle Welsh"}, ["wlo"] = {"Wolio"}, ["wlr"] = {"Wailapa"}, ["wls"] = {"Wallisian"}, ["wlu"] = {"Wuliwuli"}, ["wlv"] = {"Wichí Lhamtés Vejoz"}, ["wlw"] = {"Walak"}, ["wlx"] = {"Wali (Ghana)"}, ["wly"] = {"Waling"}, ["wma"] = {"Mawa (Nigeria)"}, ["wmb"] = {"Wambaya"}, ["wmc"] = {"Wamas"}, ["wmd"] = {"Mamaindé"}, ["wme"] = {"Wambule"}, ["wmg"] = {"Western Minyag"}, ["wmh"] = {"Waima'a"}, ["wmi"] = {"Wamin"}, ["wmm"] = {"Maiwa (Indonesia)"}, ["wmn"] = {"Waamwang"}, ["wmo"] = {"Wom (Papua New Guinea)"}, ["wms"] = {"Wambon"}, ["wmt"] = {"Walmajarri"}, ["wmw"] = {"Mwani"}, ["wmx"] = {"Womo"}, ["wnb"] = {"Wanambre"}, ["wnc"] = {"Wantoat"}, ["wnd"] = {"Wandarang"}, ["wne"] = {"Waneci"}, ["wng"] = {"Wanggom"}, ["wni"] = {"Ndzwani Comorian"}, ["wnk"] = {"Wanukaka"}, ["wnm"] = {"Wanggamala"}, ["wnn"] = {"Wunumara"}, ["wno"] = {"Wano"}, ["wnp"] = {"Wanap"}, ["wnu"] = {"Usan"}, ["wnw"] = {"Wintu"}, ["wny"] = {"Wanyi", "Waanyi"}, ["woa"] = {"Kuwema", "Tyaraity"}, ["wob"] = {"Wè Northern"}, ["woc"] = {"Wogeo"}, ["wod"] = {"Wolani"}, ["woe"] = {"Woleaian"}, ["wof"] = {"Gambian Wolof"}, ["wog"] = {"Wogamusin"}, ["woi"] = {"Kamang"}, ["wok"] = {"Longto"}, ["wom"] = {"Wom (Nigeria)"}, ["won"] = {"Wongo"}, ["woo"] = {"Manombai"}, ["wor"] = {"Woria"}, ["wos"] = {"Hanga Hundi"}, ["wow"] = {"Wawonii"}, ["woy"] = {"Weyto"}, ["wpc"] = {"Maco"}, ["wrb"] = {"Waluwarra", "Warluwara"}, ["wrg"] = {"Warungu", "Gudjal"}, ["wrh"] = {"Wiradjuri"}, ["wri"] = {"Wariyangga"}, ["wrk"] = {"Garrwa"}, ["wrl"] = {"Warlmanpa"}, ["wrm"] = {"Warumungu"}, ["wrn"] = {"Warnang"}, ["wro"] = {"Worrorra"}, ["wrp"] = {"Waropen"}, ["wrr"] = {"Wardaman"}, ["wrs"] = {"Waris"}, ["wru"] = {"Waru"}, ["wrv"] = {"Waruna"}, ["wrw"] = {"Gugu Warra"}, ["wrx"] = {"Wae Rana"}, ["wry"] = {"Merwari"}, ["wrz"] = {"Waray (Australia)"}, ["wsa"] = {"Warembori"}, ["wsg"] = {"Adilabad Gondi"}, ["wsi"] = {"Wusi"}, ["wsk"] = {"Waskia"}, ["wsr"] = {"Owenia"}, ["wss"] = {"Wasa"}, ["wsu"] = {"Wasu"}, ["wsv"] = {"Wotapuri-Katarqalai"}, ["wtf"] = {"Watiwa"}, ["wth"] = {"Wathawurrung"}, ["wti"] = {"Berta"}, ["wtk"] = {"Watakataui"}, ["wtm"] = {"Mewati"}, ["wtw"] = {"Wotu"}, ["wua"] = {"Wikngenchera"}, ["wub"] = {"Wunambal"}, ["wud"] = {"Wudu"}, ["wuh"] = {"Wutunhua"}, ["wul"] = {"Silimo"}, ["wum"] = {"Wumbvu"}, ["wun"] = {"Bungu"}, ["wur"] = {"Wurrugu"}, ["wut"] = {"Wutung"}, ["wuu"] = {"Wu Chinese"}, ["wuv"] = {"Wuvulu-Aua"}, ["wux"] = {"Wulna"}, ["wuy"] = {"Wauyai"}, ["wwa"] = {"Waama"}, ["wwb"] = {"Wakabunga"}, ["wwo"] = {"Wetamut", "Dorig"}, ["wwr"] = {"Warrwa"}, ["www"] = {"Wawa"}, ["wxa"] = {"Waxianghua"}, ["wxw"] = {"Wardandi"}, ["wyb"] = {"Wangaaybuwan-Ngiyambaa"}, ["wyi"] = {"Woiwurrung"}, ["wym"] = {"Wymysorys"}, ["wyn"] = {"Wyandot"}, ["wyr"] = {"Wayoró"}, ["wyy"] = {"Western Fijian"}, ["xaa"] = {"Andalusian Arabic"}, ["xab"] = {"Sambe"}, ["xac"] = {"Kachari"}, ["xad"] = {"Adai"}, ["xae"] = {"Aequian"}, ["xag"] = {"Aghwan"}, ["xai"] = {"Kaimbé"}, ["xaj"] = {"Ararandewára"}, ["xak"] = {"Máku"}, ["xal"] = {"Kalmyk", "Oirat"}, ["xam"] = {"ǀXam"}, ["xan"] = {"Xamtanga"}, ["xao"] = {"Khao"}, ["xap"] = {"Apalachee"}, ["xaq"] = {"Aquitanian"}, ["xar"] = {"Karami"}, ["xas"] = {"Kamas"}, ["xat"] = {"Katawixi"}, ["xau"] = {"Kauwera"}, ["xav"] = {"Xavánte"}, ["xaw"] = {"Kawaiisu"}, ["xay"] = {"Kayan Mahakam"}, ["xbb"] = {"Lower Burdekin"}, ["xbc"] = {"Bactrian"}, ["xbd"] = {"Bindal"}, ["xbe"] = {"Bigambal"}, ["xbg"] = {"Bunganditj"}, ["xbi"] = {"Kombio"}, ["xbj"] = {"Birrpayi"}, ["xbm"] = {"Middle Breton"}, ["xbn"] = {"Kenaboi"}, ["xbo"] = {"Bolgarian"}, ["xbp"] = {"Bibbulman"}, ["xbr"] = {"Kambera"}, ["xbw"] = {"Kambiwá"}, ["xby"] = {"Batjala", "Batyala"}, ["xcb"] = {"Cumbric"}, ["xcc"] = {"Camunic"}, ["xce"] = {"Celtiberian"}, ["xcg"] = {"Cisalpine Gaulish"}, ["xch"] = {"Chemakum", "Chimakum"}, ["xcl"] = {"Classical Armenian"}, ["xcm"] = {"Comecrudo"}, ["xcn"] = {"Cotoname"}, ["xco"] = {"Chorasmian"}, ["xcr"] = {"Carian"}, ["xct"] = {"Classical Tibetan"}, ["xcu"] = {"Curonian"}, ["xcv"] = {"Chuvantsy"}, ["xcw"] = {"Coahuilteco"}, ["xcy"] = {"Cayuse"}, ["xda"] = {"Darkinyung"}, ["xdc"] = {"Dacian"}, ["xdk"] = {"Dharuk"}, ["xdm"] = {"Edomite"}, ["xdo"] = {"Kwandu"}, ["xdq"] = {"Kaitag"}, ["xdy"] = {"Malayic Dayak"}, ["xeb"] = {"Eblan"}, ["xed"] = {"Hdi"}, ["xeg"] = {"ǁXegwi"}, ["xel"] = {"Kelo"}, ["xem"] = {"Kembayan"}, ["xep"] = {"Epi-Olmec"}, ["xer"] = {"Xerénte"}, ["xes"] = {"Kesawai"}, ["xet"] = {"Xetá"}, ["xeu"] = {"Keoru-Ahia"}, ["xfa"] = {"Faliscan"}, ["xga"] = {"Galatian"}, ["xgb"] = {"Gbin"}, ["xgd"] = {"Gudang"}, ["xgf"] = {"Gabrielino-Fernandeño"}, ["xgg"] = {"Goreng"}, ["xgi"] = {"Garingbal"}, ["xgl"] = {"Galindan"}, ["xgm"] = {"Dharumbal", "Guwinmal"}, ["xgn"] = {"Mongolian languages"}, ["xgr"] = {"Garza"}, ["xgu"] = {"Unggumi"}, ["xgw"] = {"Guwa"}, ["xha"] = {"Harami"}, ["xhc"] = {"Hunnic"}, ["xhd"] = {"Hadrami"}, ["xhe"] = {"Khetrani"}, ["xhm"] = {"Middle Khmer (1400 to 1850 CE)"}, ["xhr"] = {"Hernican"}, ["xht"] = {"Hattic"}, ["xhu"] = {"Hurrian"}, ["xhv"] = {"Khua"}, ["xib"] = {"Iberian"}, ["xii"] = {"Xiri"}, ["xil"] = {"Illyrian"}, ["xin"] = {"Xinca"}, ["xir"] = {"Xiriâna"}, ["xis"] = {"Kisan"}, ["xiv"] = {"Indus Valley Language"}, ["xiy"] = {"Xipaya"}, ["xjb"] = {"Minjungbal"}, ["xjt"] = {"Jaitmatang"}, ["xka"] = {"Kalkoti"}, ["xkb"] = {"Northern Nago"}, ["xkc"] = {"Kho'ini"}, ["xkd"] = {"Mendalam Kayan"}, ["xke"] = {"Kereho"}, ["xkf"] = {"Khengkha"}, ["xkg"] = {"Kagoro"}, ["xki"] = {"Kenyan Sign Language"}, ["xkj"] = {"Kajali"}, ["xkk"] = {"Kachok", "Kaco'"}, ["xkl"] = {"Mainstream Kenyah"}, ["xkn"] = {"Kayan River Kayan"}, ["xko"] = {"Kiorr"}, ["xkp"] = {"Kabatei"}, ["xkq"] = {"Koroni"}, ["xkr"] = {"Xakriabá"}, ["xks"] = {"Kumbewaha"}, ["xkt"] = {"Kantosi"}, ["xku"] = {"Kaamba"}, ["xkv"] = {"Kgalagadi"}, ["xkw"] = {"Kembra"}, ["xkx"] = {"Karore"}, ["xky"] = {"Uma' Lasan"}, ["xkz"] = {"Kurtokha"}, ["xla"] = {"Kamula"}, ["xlb"] = {"Loup B"}, ["xlc"] = {"Lycian"}, ["xld"] = {"Lydian"}, ["xle"] = {"Lemnian"}, ["xlg"] = {"Ligurian (Ancient)"}, ["xli"] = {"Liburnian"}, ["xln"] = {"Alanic"}, ["xlo"] = {"Loup A"}, ["xlp"] = {"Lepontic"}, ["xls"] = {"Lusitanian"}, ["xlu"] = {"Cuneiform Luwian"}, ["xly"] = {"Elymian"}, ["xma"] = {"Mushungulu"}, ["xmb"] = {"Mbonga"}, ["xmc"] = {"Makhuwa-Marrevone"}, ["xmd"] = {"Mbudum"}, ["xme"] = {"Median"}, ["xmf"] = {"Mingrelian"}, ["xmg"] = {"Mengaka"}, ["xmh"] = {"Kugu-Muminh"}, ["xmj"] = {"Majera"}, ["xmk"] = {"Ancient Macedonian"}, ["xml"] = {"Malaysian Sign Language"}, ["xmm"] = {"Manado Malay"}, ["xmn"] = {"Manichaean Middle Persian"}, ["xmo"] = {"Morerebi"}, ["xmp"] = {"Kuku-Mu'inh"}, ["xmq"] = {"Kuku-Mangk"}, ["xmr"] = {"Meroitic"}, ["xms"] = {"Moroccan Sign Language"}, ["xmt"] = {"Matbat"}, ["xmu"] = {"Kamu"}, ["xmv"] = {"Antankarana Malagasy", "Tankarana Malagasy"}, ["xmw"] = {"Tsimihety Malagasy"}, ["xmx"] = {"Salawati", "Maden"}, ["xmy"] = {"Mayaguduna"}, ["xmz"] = {"Mori Bawah"}, ["xna"] = {"Ancient North Arabian"}, ["xnb"] = {"Kanakanabu"}, ["xnd"] = {"Na-Dene languages"}, ["xng"] = {"Middle Mongolian"}, ["xnh"] = {"Kuanhua"}, ["xni"] = {"Ngarigu"}, ["xnj"] = {"Ngoni (Tanzania)"}, ["xnk"] = {"Nganakarti"}, ["xnm"] = {"Ngumbarl"}, ["xnn"] = {"Northern Kankanay"}, ["xno"] = {"Anglo-Norman"}, ["xnq"] = {"Ngoni (Mozambique)"}, ["xnr"] = {"Kangri"}, ["xns"] = {"Kanashi"}, ["xnt"] = {"Narragansett"}, ["xnu"] = {"Nukunul"}, ["xny"] = {"Nyiyaparli"}, ["xnz"] = {"Kenzi", "Mattoki"}, ["xoc"] = {"O'chi'chi'"}, ["xod"] = {"Kokoda"}, ["xog"] = {"Soga"}, ["xoi"] = {"Kominimung"}, ["xok"] = {"Xokleng"}, ["xom"] = {"Komo (Sudan)"}, ["xon"] = {"Konkomba"}, ["xoo"] = {"Xukurú"}, ["xop"] = {"Kopar"}, ["xor"] = {"Korubo"}, ["xow"] = {"Kowaki"}, ["xpa"] = {"Pirriya"}, ["xpb"] = {"Northeastern Tasmanian", "Pyemmairrener"}, ["xpc"] = {"Pecheneg"}, ["xpd"] = {"Oyster Bay Tasmanian"}, ["xpe"] = {"Liberia Kpelle"}, ["xpf"] = {"Southeast Tasmanian", "Nuenonne"}, ["xpg"] = {"Phrygian"}, ["xph"] = {"North Midlands Tasmanian", "Tyerrenoterpanner"}, ["xpi"] = {"Pictish"}, ["xpj"] = {"Mpalitjanh"}, ["xpk"] = {"Kulina Pano"}, ["xpl"] = {"Port Sorell Tasmanian"}, ["xpm"] = {"Pumpokol"}, ["xpn"] = {"Kapinawá"}, ["xpo"] = {"Pochutec"}, ["xpp"] = {"Puyo-Paekche"}, ["xpq"] = {"Mohegan-Pequot"}, ["xpr"] = {"Parthian"}, ["xps"] = {"Pisidian"}, ["xpt"] = {"Punthamara"}, ["xpu"] = {"Punic"}, ["xpv"] = {"Northern Tasmanian", "Tommeginne"}, ["xpw"] = {"Northwestern Tasmanian", "Peerapper"}, ["xpx"] = {"Southwestern Tasmanian", "Toogee"}, ["xpy"] = {"Puyo"}, ["xpz"] = {"Bruny Island Tasmanian"}, ["xqa"] = {"Karakhanid"}, ["xqt"] = {"Qatabanian"}, ["xra"] = {"Krahô"}, ["xrb"] = {"Eastern Karaboro"}, ["xrd"] = {"Gundungurra"}, ["xre"] = {"Kreye"}, ["xrg"] = {"Minang"}, ["xri"] = {"Krikati-Timbira"}, ["xrm"] = {"Armazic"}, ["xrn"] = {"Arin"}, ["xrr"] = {"Raetic"}, ["xrt"] = {"Aranama-Tamique"}, ["xru"] = {"Marriammu"}, ["xrw"] = {"Karawa"}, ["xsa"] = {"Sabaean"}, ["xsb"] = {"Sambal"}, ["xsc"] = {"Scythian"}, ["xsd"] = {"Sidetic"}, ["xse"] = {"Sempan"}, ["xsh"] = {"Shamang"}, ["xsi"] = {"Sio"}, ["xsj"] = {"Subi"}, ["xsl"] = {"South Slavey"}, ["xsm"] = {"Kasem"}, ["xsn"] = {"Sanga (Nigeria)"}, ["xso"] = {"Solano"}, ["xsp"] = {"Silopi"}, ["xsq"] = {"Makhuwa-Saka"}, ["xsr"] = {"Sherpa"}, ["xss"] = {"Assan"}, ["xsu"] = {"Sanumá"}, ["xsv"] = {"Sudovian"}, ["xsy"] = {"Saisiyat"}, ["xta"] = {"Alcozauca Mixtec"}, ["xtb"] = {"Chazumba Mixtec"}, ["xtc"] = {"Katcha-Kadugli-Miri"}, ["xtd"] = {"Diuxi-Tilantongo Mixtec"}, ["xte"] = {"Ketengban"}, ["xtg"] = {"Transalpine Gaulish"}, ["xth"] = {"Yitha Yitha"}, ["xti"] = {"Sinicahua Mixtec"}, ["xtj"] = {"San Juan Teita Mixtec"}, ["xtl"] = {"Tijaltepec Mixtec"}, ["xtm"] = {"Magdalena Peñasco Mixtec"}, ["xtn"] = {"Northern Tlaxiaco Mixtec"}, ["xto"] = {"Tokharian A"}, ["xtp"] = {"San Miguel Piedras Mixtec"}, ["xtq"] = {"Tumshuqese"}, ["xtr"] = {"Early Tripuri"}, ["xts"] = {"Sindihui Mixtec"}, ["xtt"] = {"Tacahua Mixtec"}, ["xtu"] = {"Cuyamecalco Mixtec"}, ["xtv"] = {"Thawa"}, ["xtw"] = {"Tawandê"}, ["xty"] = {"Yoloxochitl Mixtec"}, ["xua"] = {"Alu Kurumba"}, ["xub"] = {"Betta Kurumba"}, ["xud"] = {"Umiida"}, ["xug"] = {"Kunigami"}, ["xuj"] = {"Jennu Kurumba"}, ["xul"] = {"Ngunawal", "Nunukul"}, ["xum"] = {"Umbrian"}, ["xun"] = {"Unggaranggu"}, ["xuo"] = {"Kuo"}, ["xup"] = {"Upper Umpqua"}, ["xur"] = {"Urartian"}, ["xut"] = {"Kuthant"}, ["xuu"] = {"Kxoe", "Khwedam"}, ["xve"] = {"Venetic"}, ["xvi"] = {"Kamviri"}, ["xvn"] = {"Vandalic"}, ["xvo"] = {"Volscian"}, ["xvs"] = {"Vestinian"}, ["xwa"] = {"Kwaza"}, ["xwc"] = {"Woccon"}, ["xwd"] = {"Wadi Wadi"}, ["xwe"] = {"Xwela Gbe"}, ["xwg"] = {"Kwegu"}, ["xwj"] = {"Wajuk"}, ["xwk"] = {"Wangkumara"}, ["xwl"] = {"Western Xwla Gbe"}, ["xwo"] = {"Written Oirat"}, ["xwr"] = {"Kwerba Mamberamo"}, ["xwt"] = {"Wotjobaluk"}, ["xww"] = {"Wemba Wemba"}, ["xxb"] = {"Boro (Ghana)"}, ["xxk"] = {"Ke'o"}, ["xxm"] = {"Minkin"}, ["xxr"] = {"Koropó"}, ["xxt"] = {"Tambora"}, ["xya"] = {"Yaygir"}, ["xyb"] = {"Yandjibara"}, ["xyj"] = {"Mayi-Yapi"}, ["xyk"] = {"Mayi-Kulan"}, ["xyl"] = {"Yalakalore"}, ["xyt"] = {"Mayi-Thakurti"}, ["xyy"] = {"Yorta Yorta"}, ["xzh"] = {"Zhang-Zhung"}, ["xzm"] = {"Zemgalian"}, ["xzp"] = {"Ancient Zapotec"}, ["yaa"] = {"Yaminahua"}, ["yab"] = {"Yuhup"}, ["yac"] = {"Pass Valley Yali"}, ["yad"] = {"Yagua"}, ["yae"] = {"Pumé"}, ["yaf"] = {"Yaka (Democratic Republic of Congo)"}, ["yag"] = {"Yámana"}, ["yah"] = {"Yazgulyam"}, ["yai"] = {"Yagnobi"}, ["yaj"] = {"Banda-Yangere"}, ["yak"] = {"Yakama"}, ["yal"] = {"Yalunka"}, ["yam"] = {"Yamba"}, ["yan"] = {"Mayangna"}, ["yao"] = {"Yao"}, ["yap"] = {"Yapese"}, ["yaq"] = {"Yaqui"}, ["yar"] = {"Yabarana"}, ["yas"] = {"Nugunu (Cameroon)"}, ["yat"] = {"Yambeta"}, ["yau"] = {"Yuwana"}, ["yav"] = {"Yangben"}, ["yaw"] = {"Yawalapití"}, ["yax"] = {"Yauma"}, ["yay"] = {"Agwagwune"}, ["yaz"] = {"Lokaa"}, ["yba"] = {"Yala"}, ["ybb"] = {"Yemba"}, ["ybe"] = {"West Yugur"}, ["ybh"] = {"Yakha"}, ["ybi"] = {"Yamphu"}, ["ybj"] = {"Hasha"}, ["ybk"] = {"Bokha"}, ["ybl"] = {"Yukuben"}, ["ybm"] = {"Yaben"}, ["ybn"] = {"Yabaâna"}, ["ybo"] = {"Yabong"}, ["ybx"] = {"Yawiyo"}, ["yby"] = {"Yaweyuha"}, ["ych"] = {"Chesu"}, ["ycl"] = {"Lolopo"}, ["ycn"] = {"Yucuna"}, ["ycp"] = {"Chepya"}, ["yda"] = {"Yanda"}, ["ydd"] = {"Eastern Yiddish"}, ["yde"] = {"Yangum Dey"}, ["ydg"] = {"Yidgha"}, ["ydk"] = {"Yoidik"}, ["yea"] = {"Ravula"}, ["yec"] = {"Yeniche"}, ["yee"] = {"Yimas"}, ["yei"] = {"Yeni"}, ["yej"] = {"Yevanic"}, ["yel"] = {"Yela"}, ["yer"] = {"Tarok"}, ["yes"] = {"Nyankpa"}, ["yet"] = {"Yetfa"}, ["yeu"] = {"Yerukula"}, ["yev"] = {"Yapunda"}, ["yey"] = {"Yeyi"}, ["yga"] = {"Malyangapa"}, ["ygi"] = {"Yiningayi"}, ["ygl"] = {"Yangum Gel"}, ["ygm"] = {"Yagomi"}, ["ygp"] = {"Gepo"}, ["ygr"] = {"Yagaria"}, ["ygs"] = {"Yolŋu Sign Language"}, ["ygu"] = {"Yugul"}, ["ygw"] = {"Yagwoia"}, ["yha"] = {"Baha Buyang"}, ["yhd"] = {"Judeo-Iraqi Arabic"}, ["yhl"] = {"Hlepho Phowa"}, ["yhs"] = {"Yan-nhaŋu Sign Language"}, ["yia"] = {"Yinggarda"}, ["yif"] = {"Ache"}, ["yig"] = {"Wusa Nasu"}, ["yih"] = {"Western Yiddish"}, ["yii"] = {"Yidiny"}, ["yij"] = {"Yindjibarndi"}, ["yik"] = {"Dongshanba Lalo"}, ["yil"] = {"Yindjilandji"}, ["yim"] = {"Yimchungru Naga"}, ["yin"] = {"Riang Lai", "Yinchia"}, ["yip"] = {"Pholo"}, ["yiq"] = {"Miqie"}, ["yir"] = {"North Awyu"}, ["yis"] = {"Yis"}, ["yit"] = {"Eastern Lalu"}, ["yiu"] = {"Awu"}, ["yiv"] = {"Northern Nisu"}, ["yix"] = {"Axi Yi"}, ["yiz"] = {"Azhe"}, ["yka"] = {"Yakan"}, ["ykg"] = {"Northern Yukaghir"}, ["yki"] = {"Yoke"}, ["ykk"] = {"Yakaikeke"}, ["ykl"] = {"Khlula"}, ["ykm"] = {"Kap"}, ["ykn"] = {"Kua-nsi"}, ["yko"] = {"Yasa"}, ["ykr"] = {"Yekora"}, ["ykt"] = {"Kathu"}, ["yku"] = {"Kuamasi"}, ["yky"] = {"Yakoma"}, ["yla"] = {"Yaul"}, ["ylb"] = {"Yaleba"}, ["yle"] = {"Yele"}, ["ylg"] = {"Yelogu"}, ["yli"] = {"Angguruk Yali"}, ["yll"] = {"Yil"}, ["ylm"] = {"Limi"}, ["yln"] = {"Langnian Buyang"}, ["ylo"] = {"Naluo Yi"}, ["ylr"] = {"Yalarnnga"}, ["ylu"] = {"Aribwaung"}, ["yly"] = {"Nyâlayu", "Nyelâyu"}, ["ymb"] = {"Yambes"}, ["ymc"] = {"Southern Muji"}, ["ymd"] = {"Muda"}, ["yme"] = {"Yameo"}, ["ymg"] = {"Yamongeri"}, ["ymh"] = {"Mili"}, ["ymi"] = {"Moji"}, ["ymk"] = {"Makwe"}, ["yml"] = {"Iamalele"}, ["ymm"] = {"Maay"}, ["ymn"] = {"Yamna", "Sunum"}, ["ymo"] = {"Yangum Mon"}, ["ymp"] = {"Yamap"}, ["ymq"] = {"Qila Muji"}, ["ymr"] = {"Malasar"}, ["yms"] = {"Mysian"}, ["ymx"] = {"Northern Muji"}, ["ymz"] = {"Muzi"}, ["yna"] = {"Aluo"}, ["ynd"] = {"Yandruwandha"}, ["yne"] = {"Lang'e"}, ["yng"] = {"Yango"}, ["ynk"] = {"Naukan Yupik"}, ["ynl"] = {"Yangulam"}, ["ynn"] = {"Yana"}, ["yno"] = {"Yong"}, ["ynq"] = {"Yendang"}, ["yns"] = {"Yansi"}, ["ynu"] = {"Yahuna"}, ["yob"] = {"Yoba"}, ["yog"] = {"Yogad"}, ["yoi"] = {"Yonaguni"}, ["yok"] = {"Yokuts"}, ["yol"] = {"Yola"}, ["yom"] = {"Yombe"}, ["yon"] = {"Yongkom"}, ["yot"] = {"Yotti"}, ["yox"] = {"Yoron"}, ["yoy"] = {"Yoy"}, ["ypa"] = {"Phala"}, ["ypb"] = {"Labo Phowa"}, ["ypg"] = {"Phola"}, ["yph"] = {"Phupha"}, ["ypk"] = {"Yupik languages"}, ["ypm"] = {"Phuma"}, ["ypn"] = {"Ani Phowa"}, ["ypo"] = {"Alo Phola"}, ["ypp"] = {"Phupa"}, ["ypz"] = {"Phuza"}, ["yra"] = {"Yerakai"}, ["yrb"] = {"Yareba"}, ["yre"] = {"Yaouré"}, ["yrk"] = {"Nenets"}, ["yrl"] = {"Nhengatu"}, ["yrm"] = {"Yirrk-Mel"}, ["yrn"] = {"Yerong"}, ["yro"] = {"Yaroamë"}, ["yrs"] = {"Yarsun"}, ["yrw"] = {"Yarawata"}, ["yry"] = {"Yarluyandi"}, ["ysc"] = {"Yassic"}, ["ysd"] = {"Samatao"}, ["ysg"] = {"Sonaga"}, ["ysl"] = {"Yugoslavian Sign Language"}, ["ysm"] = {"Myanmar Sign Language"}, ["ysn"] = {"Sani"}, ["yso"] = {"Nisi (China)"}, ["ysp"] = {"Southern Lolopo"}, ["ysr"] = {"Sirenik Yupik"}, ["yss"] = {"Yessan-Mayo"}, ["ysy"] = {"Sanie"}, ["yta"] = {"Talu"}, ["ytl"] = {"Tanglang"}, ["ytp"] = {"Thopho"}, ["ytw"] = {"Yout Wam"}, ["yty"] = {"Yatay"}, ["yua"] = {"Yucateco", "Yucatec Maya"}, ["yub"] = {"Yugambal"}, ["yuc"] = {"Yuchi"}, ["yud"] = {"Judeo-Tripolitanian Arabic"}, ["yue"] = {"Yue Chinese", "Cantonese"}, ["yuf"] = {"Havasupai-Walapai-Yavapai"}, ["yug"] = {"Yug"}, ["yui"] = {"Yurutí"}, ["yuj"] = {"Karkar-Yuri"}, ["yuk"] = {"Yuki"}, ["yul"] = {"Yulu"}, ["yum"] = {"Quechan"}, ["yun"] = {"Bena (Nigeria)"}, ["yup"] = {"Yukpa"}, ["yuq"] = {"Yuqui"}, ["yur"] = {"Yurok"}, ["yut"] = {"Yopno"}, ["yuw"] = {"Yau (Morobe Province)"}, ["yux"] = {"Southern Yukaghir"}, ["yuy"] = {"East Yugur"}, ["yuz"] = {"Yuracare"}, ["yva"] = {"Yawa"}, ["yvt"] = {"Yavitero"}, ["ywa"] = {"Kalou"}, ["ywg"] = {"Yinhawangka"}, ["ywl"] = {"Western Lalu"}, ["ywn"] = {"Yawanawa"}, ["ywq"] = {"Wuding-Luquan Yi"}, ["ywr"] = {"Yawuru"}, ["ywt"] = {"Xishanba Lalo", "Central Lalo"}, ["ywu"] = {"Wumeng Nasu"}, ["yww"] = {"Yawarawarga"}, ["yxa"] = {"Mayawali"}, ["yxg"] = {"Yagara"}, ["yxl"] = {"Yardliyawarra"}, ["yxm"] = {"Yinwum"}, ["yxu"] = {"Yuyu"}, ["yxy"] = {"Yabula Yabula"}, ["yyr"] = {"Yir Yoront"}, ["yyu"] = {"Yau (Sandaun Province)"}, ["yyz"] = {"Ayizi"}, ["yzg"] = {"E'ma Buyang"}, ["yzk"] = {"Zokhuo"}, ["zaa"] = {"Sierra de Juárez Zapotec"}, ["zab"] = {"Western Tlacolula Valley Zapotec", "San Juan Guelavía Zapotec"}, ["zac"] = {"Ocotlán Zapotec"}, ["zad"] = {"Cajonos Zapotec"}, ["zae"] = {"Yareni Zapotec"}, ["zaf"] = {"Ayoquesco Zapotec"}, ["zag"] = {"Zaghawa"}, ["zah"] = {"Zangwal"}, ["zai"] = {"Isthmus Zapotec"}, ["zaj"] = {"Zaramo"}, ["zak"] = {"Zanaki"}, ["zal"] = {"Zauzou"}, ["zam"] = {"Miahuatlán Zapotec"}, ["zao"] = {"Ozolotepec Zapotec"}, ["zap"] = {"Zapotec"}, ["zaq"] = {"Aloápam Zapotec"}, ["zar"] = {"Rincón Zapotec"}, ["zas"] = {"Santo Domingo Albarradas Zapotec"}, ["zat"] = {"Tabaa Zapotec"}, ["zau"] = {"Zangskari"}, ["zav"] = {"Yatzachi Zapotec"}, ["zaw"] = {"Mitla Zapotec"}, ["zax"] = {"Xadani Zapotec"}, ["zay"] = {"Zayse-Zergulla", "Zaysete"}, ["zaz"] = {"Zari"}, ["zba"] = {"Balaibalan"}, ["zbc"] = {"Central Berawan"}, ["zbe"] = {"East Berawan"}, ["zbl"] = {"Blissymbols", "Bliss", "Blissymbolics"}, ["zbt"] = {"Batui"}, ["zbu"] = {"Bu (Bauchi State)"}, ["zbw"] = {"West Berawan"}, ["zca"] = {"Coatecas Altas Zapotec"}, ["zcd"] = {"Las Delicias Zapotec"}, ["zch"] = {"Central Hongshuihe Zhuang"}, ["zdj"] = {"Ngazidja Comorian"}, ["zea"] = {"Zeeuws"}, ["zeg"] = {"Zenag"}, ["zeh"] = {"Eastern Hongshuihe Zhuang"}, ["zen"] = {"Zenaga"}, ["zga"] = {"Kinga"}, ["zgb"] = {"Guibei Zhuang"}, ["zgh"] = {"Standard Moroccan Tamazight"}, ["zgm"] = {"Minz Zhuang"}, ["zgn"] = {"Guibian Zhuang"}, ["zgr"] = {"Magori"}, ["zhb"] = {"Zhaba"}, ["zhd"] = {"Dai Zhuang"}, ["zhi"] = {"Zhire"}, ["zhn"] = {"Nong Zhuang"}, ["zhw"] = {"Zhoa"}, ["zhx"] = {"Chinese (family)"}, ["zia"] = {"Zia"}, ["zib"] = {"Zimbabwe Sign Language"}, ["zik"] = {"Zimakani"}, ["zil"] = {"Zialo"}, ["zim"] = {"Mesme"}, ["zin"] = {"Zinza"}, ["ziw"] = {"Zigula"}, ["ziz"] = {"Zizilivakan"}, ["zka"] = {"Kaimbulawa"}, ["zkb"] = {"Koibal"}, ["zkd"] = {"Kadu"}, ["zkg"] = {"Koguryo"}, ["zkh"] = {"Khorezmian"}, ["zkk"] = {"Karankawa"}, ["zkn"] = {"Kanan"}, ["zko"] = {"Kott"}, ["zkp"] = {"São Paulo Kaingáng"}, ["zkr"] = {"Zakhring"}, ["zkt"] = {"Kitan"}, ["zku"] = {"Kaurna"}, ["zkv"] = {"Krevinian"}, ["zkz"] = {"Khazar"}, ["zla"] = {"Zula"}, ["zle"] = {"East Slavic languages"}, ["zlj"] = {"Liujiang Zhuang"}, ["zlm"] = {"Malay (individual language)"}, ["zln"] = {"Lianshan Zhuang"}, ["zlq"] = {"Liuqian Zhuang"}, ["zls"] = {"South Slavic languages"}, ["zlw"] = {"West Slavic languages"}, ["zma"] = {"Manda (Australia)"}, ["zmb"] = {"Zimba"}, ["zmc"] = {"Margany"}, ["zmd"] = {"Maridan"}, ["zme"] = {"Mangerr"}, ["zmf"] = {"Mfinu"}, ["zmg"] = {"Marti Ke"}, ["zmh"] = {"Makolkol"}, ["zmi"] = {"Negeri Sembilan Malay"}, ["zmj"] = {"Maridjabin"}, ["zmk"] = {"Mandandanyi"}, ["zml"] = {"Matngala"}, ["zmm"] = {"Marimanindji", "Marramaninyshi"}, ["zmn"] = {"Mbangwe"}, ["zmo"] = {"Molo"}, ["zmp"] = {"Mpuono"}, ["zmq"] = {"Mituku"}, ["zmr"] = {"Maranunggu"}, ["zms"] = {"Mbesa"}, ["zmt"] = {"Maringarr"}, ["zmu"] = {"Muruwari"}, ["zmv"] = {"Mbariman-Gudhinma"}, ["zmw"] = {"Mbo (Democratic Republic of Congo)"}, ["zmx"] = {"Bomitaba"}, ["zmy"] = {"Mariyedi"}, ["zmz"] = {"Mbandja"}, ["zna"] = {"Zan Gula"}, ["znd"] = {"Zande languages"}, ["zne"] = {"Zande (individual language)"}, ["zng"] = {"Mang"}, ["znk"] = {"Manangkari"}, ["zns"] = {"Mangas"}, ["zoc"] = {"Copainalá Zoque"}, ["zoh"] = {"Chimalapa Zoque"}, ["zom"] = {"Zou"}, ["zoo"] = {"Asunción Mixtepec Zapotec"}, ["zoq"] = {"Tabasco Zoque"}, ["zor"] = {"Rayón Zoque"}, ["zos"] = {"Francisco León Zoque"}, ["zpa"] = {"Lachiguiri Zapotec"}, ["zpb"] = {"Yautepec Zapotec"}, ["zpc"] = {"Choapan Zapotec"}, ["zpd"] = {"Southeastern Ixtlán Zapotec"}, ["zpe"] = {"Petapa Zapotec"}, ["zpf"] = {"San Pedro Quiatoni Zapotec"}, ["zpg"] = {"Guevea De Humboldt Zapotec"}, ["zph"] = {"Totomachapan Zapotec"}, ["zpi"] = {"Santa María Quiegolani Zapotec"}, ["zpj"] = {"Quiavicuzas Zapotec"}, ["zpk"] = {"Tlacolulita Zapotec"}, ["zpl"] = {"Lachixío Zapotec"}, ["zpm"] = {"Mixtepec Zapotec"}, ["zpn"] = {"Santa Inés Yatzechi Zapotec"}, ["zpo"] = {"Amatlán Zapotec"}, ["zpp"] = {"El Alto Zapotec"}, ["zpq"] = {"Zoogocho Zapotec"}, ["zpr"] = {"Santiago Xanica Zapotec"}, ["zps"] = {"Coatlán Zapotec"}, ["zpt"] = {"San Vicente Coatlán Zapotec"}, ["zpu"] = {"Yalálag Zapotec"}, ["zpv"] = {"Chichicapan Zapotec"}, ["zpw"] = {"Zaniza Zapotec"}, ["zpx"] = {"San Baltazar Loxicha Zapotec"}, ["zpy"] = {"Mazaltepec Zapotec"}, ["zpz"] = {"Texmelucan Zapotec"}, ["zqe"] = {"Qiubei Zhuang"}, ["zra"] = {"Kara (Korea)"}, ["zrg"] = {"Mirgan"}, ["zrn"] = {"Zerenkel"}, ["zro"] = {"Záparo"}, ["zrp"] = {"Zarphatic"}, ["zrs"] = {"Mairasi"}, ["zsa"] = {"Sarasira"}, ["zsk"] = {"Kaskean"}, ["zsl"] = {"Zambian Sign Language"}, ["zsm"] = {"Standard Malay"}, ["zsr"] = {"Southern Rincon Zapotec"}, ["zsu"] = {"Sukurum"}, ["zte"] = {"Elotepec Zapotec"}, ["ztg"] = {"Xanaguía Zapotec"}, ["ztl"] = {"Lapaguía-Guivini Zapotec"}, ["ztm"] = {"San Agustín Mixtepec Zapotec"}, ["ztn"] = {"Santa Catarina Albarradas Zapotec"}, ["ztp"] = {"Loxicha Zapotec"}, ["ztq"] = {"Quioquitani-Quierí Zapotec"}, ["zts"] = {"Tilquiapan Zapotec"}, ["ztt"] = {"Tejalapan Zapotec"}, ["ztu"] = {"Güilá Zapotec"}, ["ztx"] = {"Zaachila Zapotec"}, ["zty"] = {"Yatee Zapotec"}, ["zua"] = {"Zeem"}, ["zuh"] = {"Tokano"}, ["zum"] = {"Kumzari"}, ["zun"] = {"Zuni"}, ["zuy"] = {"Zumaya"}, ["zwa"] = {"Zay"}, ["zxx"] = {"No linguistic content", "Not applicable"}, ["zyb"] = {"Yongbei Zhuang"}, ["zyg"] = {"Yang Zhuang"}, ["zyj"] = {"Youjiang Zhuang"}, ["zyn"] = {"Yongnan Zhuang"}, ["zyp"] = {"Zyphe Chin"}, ["zza"] = {"Zaza", "Dimili", "Dimli (macrolanguage)", "Kirdki", "Kirmanjki (macrolanguage)", "Zazaki"}, ["zzj"] = {"Zuojiang Zhuang"} } local deprecated = { ["in"] = {"Indonesian"}, ["iw"] = {"Hebrew"}, ["ji"] = {"Yiddish"}, ["jw"] = {"Javanese"}, ["mo"] = {"Moldavian", "Moldovan"}, ["aam"] = {"Aramanik"}, ["adp"] = {"Adap"}, ["agp"] = {"Paranan"}, ["ais"] = {"Nataoran Amis"}, ["ajt"] = {"Judeo-Tunisian Arabic"}, ["aoh"] = {"Arma"}, ["asd"] = {"Asas"}, ["aue"] = {"ǂKxʼauǁʼein"}, ["ayx"] = {"Ayi (China)"}, ["ayy"] = {"Tayabas Ayta"}, ["baz"] = {"Tunen"}, ["bbz"] = {"Babalia Creole Arabic"}, ["bgm"] = {"Baga Mboteni"}, ["bhk"] = {"Albay Bicolano"}, ["bic"] = {"Bikaru"}, ["bij"] = {"Vaghat-Ya-Bijim-Legeri"}, ["bjd"] = {"Bandjigali"}, ["bjq"] = {"Southern Betsimisaraka Malagasy"}, ["bkb"] = {"Finallig"}, ["blg"] = {"Balau"}, ["bmy"] = {"Bemba (Democratic Republic of Congo)"}, ["bpb"] = {"Barbacoas"}, ["btb"] = {"Beti (Cameroon)"}, ["btl"] = {"Bhatola"}, ["bxx"] = {"Borna (Democratic Republic of Congo)"}, ["byy"] = {"Buya"}, ["cbe"] = {"Chipiajes"}, ["cbh"] = {"Cagua"}, ["cca"] = {"Cauca"}, ["ccq"] = {"Chaungtha"}, ["cdg"] = {"Chamari"}, ["cjr"] = {"Chorotega"}, ["cka"] = {"Khumi Awa Chin"}, ["cmk"] = {"Chimakum"}, ["coy"] = {"Coyaima"}, ["cqu"] = {"Chilean Quechua"}, ["cug"] = {"Chungmboko", "Cung"}, ["cum"] = {"Cumeral"}, ["daf"] = {"Dan"}, ["dap"] = {"Nisi (India)"}, ["dgu"] = {"Degaru"}, ["dha"] = {"Dhanwar (India)"}, ["dit"] = {"Dirari"}, ["djl"] = {"Djiwarli"}, ["dkl"] = {"Kolum So Dogon"}, ["drh"] = {"Darkhat"}, ["drr"] = {"Dororo"}, ["drw"] = {"Darwazi"}, ["dud"] = {"Hun-Saare"}, ["duj"] = {"Dhuwal"}, ["dwl"] = {"Walo Kumbe Dogon"}, ["dzd"] = {"Daza"}, ["ekc"] = {"Eastern Karnic"}, ["elp"] = {"Elpaputih"}, ["emo"] = {"Emok"}, ["gav"] = {"Gabutamon"}, ["gbc"] = {"Garawa"}, ["gfx"] = {"Mangetti Dune ǃXung"}, ["ggn"] = {"Eastern Gurung"}, ["ggo"] = {"Southern Gondi"}, ["ggr"] = {"Aghu Tharnggalu"}, ["gio"] = {"Gelao"}, ["gji"] = {"Geji"}, ["gli"] = {"Guliguli"}, ["gti"] = {"Gbati-ri"}, ["guv"] = {"Gey"}, ["hrr"] = {"Horuru"}, ["iap"] = {"Iapama"}, ["ibi"] = {"Ibilo"}, ["ill"] = {"Iranun"}, ["ilw"] = {"Talur"}, ["ime"] = {"Imeraguen"}, ["izi"] = {"Izi-Ezaa-Ikwo-Mgbo"}, ["jar"] = {"Jarawa (Nigeria)"}, ["jeg"] = {"Jeng"}, ["kbf"] = {"Kakauhua"}, ["kdv"] = {"Kado"}, ["kgc"] = {"Kasseng"}, ["kgd"] = {"Kataang"}, ["kgh"] = {"Upper Tanudan Kalinga"}, ["kjf"] = {"Khalaj [Indo-Iranian]"}, ["koj"] = {"Sara Dunjo"}, ["kox"] = {"Coxima"}, ["kpp"] = {"Paku Karen"}, ["krm"] = {"Krim"}, ["ktr"] = {"Kota Marudu Tinagas"}, ["kvs"] = {"Kunggara"}, ["kwq"] = {"Kwak"}, ["kxe"] = {"Kakihum"}, ["kxl"] = {"Nepali Kurux"}, ["kxu"] = {"Kui (India)"}, ["kzh"] = {"Kenuzi-Dongola"}, ["kzj"] = {"Coastal Kadazan"}, ["kzt"] = {"Tambunan Dusun"}, ["lak"] = {"Laka (Nigeria)"}, ["lba"] = {"Lui"}, ["leg"] = {"Lengua"}, ["lii"] = {"Lingkhim"}, ["llo"] = {"Khlor"}, ["lmm"] = {"Lamam"}, ["lmz"] = {"Lumbee"}, ["lno"] = {"Lango (South Sudan)"}, ["lsg"] = {"Lyons Sign Language"}, ["meg"] = {"Mea"}, ["mgx"] = {"Omati"}, ["mhh"] = {"Maskoy Pidgin"}, ["mja"] = {"Mahei"}, ["mld"] = {"Malakhel"}, ["mnt"] = {"Maykulan"}, ["mof"] = {"Mohegan-Montauk-Narragansett"}, ["mst"] = {"Cataelano Mandaya"}, ["mvm"] = {"Muya"}, ["mwd"] = {"Mudbura"}, ["mwj"] = {"Maligo"}, ["mwx"] = {"Mediak"}, ["mwy"] = {"Mosiro"}, ["myd"] = {"Maramba"}, ["myi"] = {"Mina (India)"}, ["myq"] = {"Forest Maninka"}, ["myt"] = {"Sangab Mandaya"}, ["nad"] = {"Nijadali"}, ["nbf"] = {"Naxi"}, ["nbx"] = {"Ngura"}, ["ncp"] = {"Ndaktup"}, ["ngo"] = {"Ngoni"}, ["nln"] = {"Durango Nahuatl"}, ["nlr"] = {"Ngarla"}, ["nns"] = {"Ningye"}, ["nnx"] = {"Ngong"}, ["noo"] = {"Nootka"}, ["nts"] = {"Natagaimas"}, ["nxu"] = {"Narau"}, ["ome"] = {"Omejes"}, ["oun"] = {"ǃOǃung"}, ["pat"] = {"Papitalai"}, ["pbz"] = {"Palu"}, ["pcr"] = {"Panang"}, ["pgy"] = {"Pongyong"}, ["pii"] = {"Pini"}, ["plp"] = {"Palpa"}, ["pmc"] = {"Palumata"}, ["pmu"] = {"Mirpur Panjabi"}, ["pod"] = {"Ponares"}, ["ppa"] = {"Pao"}, ["ppr"] = {"Piru"}, ["prb"] = {"Lua'"}, ["pry"] = {"Pray 3"}, ["puk"] = {"Pu Ko"}, ["puz"] = {"Purum Naga"}, ["rie"] = {"Rien"}, ["rmr"] = {"Caló"}, ["rna"] = {"Runa"}, ["rsi"] = {"Rennellese Sign Language"}, ["sap"] = {"Sanapaná"}, ["sca"] = {"Sansu"}, ["sdm"] = {"Semandang"}, ["sgl"] = {"Sanglechi-Ishkashimi"}, ["sgo"] = {"Songa"}, ["skk"] = {"Sok"}, ["smd"] = {"Sama"}, ["snb"] = {"Sebuyau"}, ["snh"] = {"Shinabo"}, ["sul"] = {"Surigaonon"}, ["sum"] = {"Sumo-Mayangna"}, ["svr"] = {"Savara"}, ["tbb"] = {"Tapeba"}, ["tdu"] = {"Tempasuk Dusun"}, ["tgg"] = {"Tangga"}, ["thc"] = {"Tai Hang Tong"}, ["thw"] = {"Thudam"}, ["thx"] = {"The"}, ["tid"] = {"Tidong"}, ["tie"] = {"Tingal"}, ["tkk"] = {"Takpa"}, ["tlw"] = {"South Wemale"}, ["tmp"] = {"Tai Mène"}, ["tne"] = {"Tinoc Kallahan"}, ["tnf"] = {"Tangshewi"}, ["toe"] = {"Tomedes"}, ["tsf"] = {"Southwestern Tamang"}, ["unp"] = {"Worora"}, ["uok"] = {"Uokha"}, ["uun"] = {"Kulon-Pazeh"}, ["vki"] = {"Ija-Zuba"}, ["wgw"] = {"Wagawaga"}, ["wit"] = {"Wintu"}, ["wiw"] = {"Wirangu"}, ["wra"] = {"Warapu"}, ["wrd"] = {"Warduji"}, ["wya"] = {"Wyandot"}, ["xba"] = {"Kamba (Brazil)"}, ["xbx"] = {"Kabixí"}, ["xia"] = {"Xiandao"}, ["xip"] = {"Xipináwa"}, ["xkh"] = {"Karahawyana"}, ["xrq"] = {"Karranga"}, ["xtz"] = {"Tasmanian"}, ["ybd"] = {"Yangbye"}, ["yds"] = {"Yiddish Sign Language"}, ["yen"] = {"Yendang"}, ["yiy"] = {"Yir Yoront"}, ["yma"] = {"Yamphe"}, ["ymt"] = {"Mator-Taygi-Karagas"}, ["ynh"] = {"Yangho"}, ["yos"] = {"Yos"}, ["yri"] = {"Yarí"}, ["yuu"] = {"Yugh"}, ["zir"] = {"Ziriya"} } return { active = active, deprecated = deprecated, } 1cfc8321a5d507256a5a1115e89233d70355779c Module:Language/data/iana scripts 828 42 79 2024-01-03T21:19:57Z Laggardson 2 Created page with "-- File-Date: 2022-03-02 return { ["Adlm"] = {"Adlam"}, ["Afak"] = {"Afaka"}, ["Aghb"] = {"Caucasian Albanian"}, ["Ahom"] = {"Ahom", "Tai Ahom"}, ["Arab"] = {"Arabic"}, ["Aran"] = {"Arabic (Nastaliq variant)"}, ["Armi"] = {"Imperial Aramaic"}, ["Armn"] = {"Armenian"}, ["Avst"] = {"Avestan"}, ["Bali"] = {"Balinese"}, ["Bamu"] = {"Bamum"}, ["Bass"] = {"Bassa Vah"}, ["Batk"] = {"Batak"}, ["Beng"] = {"Bengali", "Bangla"}, ["Bhks"] = {"Bhaiksuki"}, ["Blis"] =..." Scribunto text/plain -- File-Date: 2022-03-02 return { ["Adlm"] = {"Adlam"}, ["Afak"] = {"Afaka"}, ["Aghb"] = {"Caucasian Albanian"}, ["Ahom"] = {"Ahom", "Tai Ahom"}, ["Arab"] = {"Arabic"}, ["Aran"] = {"Arabic (Nastaliq variant)"}, ["Armi"] = {"Imperial Aramaic"}, ["Armn"] = {"Armenian"}, ["Avst"] = {"Avestan"}, ["Bali"] = {"Balinese"}, ["Bamu"] = {"Bamum"}, ["Bass"] = {"Bassa Vah"}, ["Batk"] = {"Batak"}, ["Beng"] = {"Bengali", "Bangla"}, ["Bhks"] = {"Bhaiksuki"}, ["Blis"] = {"Blissymbols"}, ["Bopo"] = {"Bopomofo"}, ["Brah"] = {"Brahmi"}, ["Brai"] = {"Braille"}, ["Bugi"] = {"Buginese"}, ["Buhd"] = {"Buhid"}, ["Cakm"] = {"Chakma"}, ["Cans"] = {"Unified Canadian Aboriginal Syllabics"}, ["Cari"] = {"Carian"}, ["Cham"] = {"Cham"}, ["Cher"] = {"Cherokee"}, ["Chrs"] = {"Chorasmian"}, ["Cirt"] = {"Cirth"}, ["Copt"] = {"Coptic"}, ["Cpmn"] = {"Cypro-Minoan"}, ["Cprt"] = {"Cypriot syllabary"}, ["Cyrl"] = {"Cyrillic"}, ["Cyrs"] = {"Cyrillic (Old Church Slavonic variant)"}, ["Deva"] = {"Devanagari", "Nagari"}, ["Diak"] = {"Dives Akuru"}, ["Dogr"] = {"Dogra"}, ["Dsrt"] = {"Deseret", "Mormon"}, ["Dupl"] = {"Duployan shorthand", "Duployan stenography"}, ["Egyd"] = {"Egyptian demotic"}, ["Egyh"] = {"Egyptian hieratic"}, ["Egyp"] = {"Egyptian hieroglyphs"}, ["Elba"] = {"Elbasan"}, ["Elym"] = {"Elymaic"}, ["Ethi"] = {"Ethiopic", "Geʻez", "Ge'ez"}, ["Geok"] = {"Khutsuri (Asomtavruli and Nuskhuri)"}, ["Geor"] = {"Georgian (Mkhedruli and Mtavruli)"}, ["Glag"] = {"Glagolitic"}, ["Gong"] = {"Gunjala Gondi"}, ["Gonm"] = {"Masaram Gondi"}, ["Goth"] = {"Gothic"}, ["Gran"] = {"Grantha"}, ["Grek"] = {"Greek"}, ["Gujr"] = {"Gujarati"}, ["Guru"] = {"Gurmukhi"}, ["Hanb"] = {"Han with Bopomofo (alias for Han + Bopomofo)"}, ["Hang"] = {"Hangul", "Hangŭl", "Hangeul"}, ["Hani"] = {"Han", "Hanzi", "Kanji", "Hanja"}, ["Hano"] = {"Hanunoo", "Hanunóo"}, ["Hans"] = {"Han (Simplified variant)"}, ["Hant"] = {"Han (Traditional variant)"}, ["Hatr"] = {"Hatran"}, ["Hebr"] = {"Hebrew"}, ["Hira"] = {"Hiragana"}, ["Hluw"] = {"Anatolian Hieroglyphs", "Luwian Hieroglyphs", "Hittite Hieroglyphs"}, ["Hmng"] = {"Pahawh Hmong"}, ["Hmnp"] = {"Nyiakeng Puachue Hmong"}, ["Hrkt"] = {"Japanese syllabaries (alias for Hiragana + Katakana)"}, ["Hung"] = {"Old Hungarian", "Hungarian Runic"}, ["Inds"] = {"Indus", "Harappan"}, ["Ital"] = {"Old Italic (Etruscan, Oscan, etc.)"}, ["Jamo"] = {"Jamo (alias for Jamo subset of Hangul)"}, ["Java"] = {"Javanese"}, ["Jpan"] = {"Japanese (alias for Han + Hiragana + Katakana)"}, ["Jurc"] = {"Jurchen"}, ["Kali"] = {"Kayah Li"}, ["Kana"] = {"Katakana"}, ["Kawi"] = {"Kawi"}, ["Khar"] = {"Kharoshthi"}, ["Khmr"] = {"Khmer"}, ["Khoj"] = {"Khojki"}, ["Kitl"] = {"Khitan large script"}, ["Kits"] = {"Khitan small script"}, ["Knda"] = {"Kannada"}, ["Kore"] = {"Korean (alias for Hangul + Han)"}, ["Kpel"] = {"Kpelle"}, ["Kthi"] = {"Kaithi"}, ["Lana"] = {"Tai Tham", "Lanna"}, ["Laoo"] = {"Lao"}, ["Latf"] = {"Latin (Fraktur variant)"}, ["Latg"] = {"Latin (Gaelic variant)"}, ["Latn"] = {"Latin"}, ["Leke"] = {"Leke"}, ["Lepc"] = {"Lepcha", "Róng"}, ["Limb"] = {"Limbu"}, ["Lina"] = {"Linear A"}, ["Linb"] = {"Linear B"}, ["Lisu"] = {"Lisu", "Fraser"}, ["Loma"] = {"Loma"}, ["Lyci"] = {"Lycian"}, ["Lydi"] = {"Lydian"}, ["Mahj"] = {"Mahajani"}, ["Maka"] = {"Makasar"}, ["Mand"] = {"Mandaic", "Mandaean"}, ["Mani"] = {"Manichaean"}, ["Marc"] = {"Marchen"}, ["Maya"] = {"Mayan hieroglyphs"}, ["Medf"] = {"Medefaidrin", "Oberi Okaime", "Oberi Ɔkaimɛ"}, ["Mend"] = {"Mende Kikakui"}, ["Merc"] = {"Meroitic Cursive"}, ["Mero"] = {"Meroitic Hieroglyphs"}, ["Mlym"] = {"Malayalam"}, ["Modi"] = {"Modi", "Moḍī"}, ["Mong"] = {"Mongolian"}, ["Moon"] = {"Moon", "Moon code", "Moon script", "Moon type"}, ["Mroo"] = {"Mro", "Mru"}, ["Mtei"] = {"Meitei Mayek", "Meithei", "Meetei"}, ["Mult"] = {"Multani"}, ["Mymr"] = {"Myanmar", "Burmese"}, ["Nagm"] = {"Nag Mundari"}, ["Nand"] = {"Nandinagari"}, ["Narb"] = {"Old North Arabian", "Ancient North Arabian"}, ["Nbat"] = {"Nabataean"}, ["Newa"] = {"Newa", "Newar", "Newari", "Nepāla lipi"}, ["Nkdb"] = {"Naxi Dongba", "na²¹ɕi³³ to³³ba²¹", "Nakhi Tomba"}, ["Nkgb"] = {"Naxi Geba", "na²¹ɕi³³ gʌ²¹ba²¹", "'Na-'Khi ²Ggŏ-¹baw", "Nakhi Geba"}, ["Nkoo"] = {"N’Ko", "N'Ko"}, ["Nshu"] = {"Nüshu"}, ["Ogam"] = {"Ogham"}, ["Olck"] = {"Ol Chiki", "Ol Cemet'", "Ol", "Santali"}, ["Orkh"] = {"Old Turkic", "Orkhon Runic"}, ["Orya"] = {"Oriya", "Odia"}, ["Osge"] = {"Osage"}, ["Osma"] = {"Osmanya"}, ["Ougr"] = {"Old Uyghur"}, ["Palm"] = {"Palmyrene"}, ["Pauc"] = {"Pau Cin Hau"}, ["Pcun"] = {"Proto-Cuneiform"}, ["Pelm"] = {"Proto-Elamite"}, ["Perm"] = {"Old Permic"}, ["Phag"] = {"Phags-pa"}, ["Phli"] = {"Inscriptional Pahlavi"}, ["Phlp"] = {"Psalter Pahlavi"}, ["Phlv"] = {"Book Pahlavi"}, ["Phnx"] = {"Phoenician"}, ["Piqd"] = {"Klingon (KLI pIqaD)"}, ["Plrd"] = {"Miao", "Pollard"}, ["Prti"] = {"Inscriptional Parthian"}, ["Psin"] = {"Proto-Sinaitic"}, ["Ranj"] = {"Ranjana"}, ["Rjng"] = {"Rejang", "Redjang", "Kaganga"}, ["Rohg"] = {"Hanifi Rohingya"}, ["Roro"] = {"Rongorongo"}, ["Runr"] = {"Runic"}, ["Samr"] = {"Samaritan"}, ["Sara"] = {"Sarati"}, ["Sarb"] = {"Old South Arabian"}, ["Saur"] = {"Saurashtra"}, ["Sgnw"] = {"SignWriting"}, ["Shaw"] = {"Shavian", "Shaw"}, ["Shrd"] = {"Sharada", "Śāradā"}, ["Shui"] = {"Shuishu"}, ["Sidd"] = {"Siddham", "Siddhaṃ", "Siddhamātṛkā"}, ["Sind"] = {"Khudawadi", "Sindhi"}, ["Sinh"] = {"Sinhala"}, ["Sogd"] = {"Sogdian"}, ["Sogo"] = {"Old Sogdian"}, ["Sora"] = {"Sora Sompeng"}, ["Soyo"] = {"Soyombo"}, ["Sund"] = {"Sundanese"}, ["Sunu"] = {"Sunuwar"}, ["Sylo"] = {"Syloti Nagri"}, ["Syrc"] = {"Syriac"}, ["Syre"] = {"Syriac (Estrangelo variant)"}, ["Syrj"] = {"Syriac (Western variant)"}, ["Syrn"] = {"Syriac (Eastern variant)"}, ["Tagb"] = {"Tagbanwa"}, ["Takr"] = {"Takri", "Ṭākrī", "Ṭāṅkrī"}, ["Tale"] = {"Tai Le"}, ["Talu"] = {"New Tai Lue"}, ["Taml"] = {"Tamil"}, ["Tang"] = {"Tangut"}, ["Tavt"] = {"Tai Viet"}, ["Telu"] = {"Telugu"}, ["Teng"] = {"Tengwar"}, ["Tfng"] = {"Tifinagh", "Berber"}, ["Tglg"] = {"Tagalog", "Baybayin", "Alibata"}, ["Thaa"] = {"Thaana"}, ["Thai"] = {"Thai"}, ["Tibt"] = {"Tibetan"}, ["Tirh"] = {"Tirhuta"}, ["Tnsa"] = {"Tangsa"}, ["Toto"] = {"Toto"}, ["Ugar"] = {"Ugaritic"}, ["Vaii"] = {"Vai"}, ["Visp"] = {"Visible Speech"}, ["Vith"] = {"Vithkuqi"}, ["Wara"] = {"Warang Citi", "Varang Kshiti"}, ["Wcho"] = {"Wancho"}, ["Wole"] = {"Woleai"}, ["Xpeo"] = {"Old Persian"}, ["Xsux"] = {"Sumero-Akkadian cuneiform"}, ["Yezi"] = {"Yezidi"}, ["Yiii"] = {"Yi"}, ["Zanb"] = {"Zanabazar Square", "Zanabazarin Dörböljin Useg", "Xewtee Dörböljin Bicig", "Horizontal Square Script"}, ["Zinh"] = {"Code for inherited script"}, ["Zmth"] = {"Mathematical notation"}, ["Zsye"] = {"Symbols (Emoji variant)"}, ["Zsym"] = {"Symbols"}, ["Zxxx"] = {"Code for unwritten documents"}, ["Zyyy"] = {"Code for undetermined script"}, ["Zzzz"] = {"Code for uncoded script"} } 676756cbab249d1b372d05ff9ab48486764e33e9 Module:Language/data/iana regions 828 43 80 2024-01-03T21:21:06Z Laggardson 2 Created page with "-- File-Date: 2022-03-02 return { ["AC"] = {"Ascension Island"}, ["AD"] = {"Andorra"}, ["AE"] = {"United Arab Emirates"}, ["AF"] = {"Afghanistan"}, ["AG"] = {"Antigua and Barbuda"}, ["AI"] = {"Anguilla"}, ["AL"] = {"Albania"}, ["AM"] = {"Armenia"}, ["AO"] = {"Angola"}, ["AQ"] = {"Antarctica"}, ["AR"] = {"Argentina"}, ["AS"] = {"American Samoa"}, ["AT"] = {"Austria"}, ["AU"] = {"Australia"}, ["AW"] = {"Aruba"}, ["AX"] = {"Åland Islands"}, ["AZ"] = {"Azer..." Scribunto text/plain -- File-Date: 2022-03-02 return { ["AC"] = {"Ascension Island"}, ["AD"] = {"Andorra"}, ["AE"] = {"United Arab Emirates"}, ["AF"] = {"Afghanistan"}, ["AG"] = {"Antigua and Barbuda"}, ["AI"] = {"Anguilla"}, ["AL"] = {"Albania"}, ["AM"] = {"Armenia"}, ["AO"] = {"Angola"}, ["AQ"] = {"Antarctica"}, ["AR"] = {"Argentina"}, ["AS"] = {"American Samoa"}, ["AT"] = {"Austria"}, ["AU"] = {"Australia"}, ["AW"] = {"Aruba"}, ["AX"] = {"Åland Islands"}, ["AZ"] = {"Azerbaijan"}, ["BA"] = {"Bosnia and Herzegovina"}, ["BB"] = {"Barbados"}, ["BD"] = {"Bangladesh"}, ["BE"] = {"Belgium"}, ["BF"] = {"Burkina Faso"}, ["BG"] = {"Bulgaria"}, ["BH"] = {"Bahrain"}, ["BI"] = {"Burundi"}, ["BJ"] = {"Benin"}, ["BL"] = {"Saint Barthélemy"}, ["BM"] = {"Bermuda"}, ["BN"] = {"Brunei Darussalam"}, ["BO"] = {"Bolivia"}, ["BQ"] = {"Bonaire, Sint Eustatius and Saba"}, ["BR"] = {"Brazil"}, ["BS"] = {"Bahamas"}, ["BT"] = {"Bhutan"}, ["BV"] = {"Bouvet Island"}, ["BW"] = {"Botswana"}, ["BY"] = {"Belarus"}, ["BZ"] = {"Belize"}, ["CA"] = {"Canada"}, ["CC"] = {"Cocos (Keeling) Islands"}, ["CD"] = {"The Democratic Republic of the Congo"}, ["CF"] = {"Central African Republic"}, ["CG"] = {"Congo"}, ["CH"] = {"Switzerland"}, ["CI"] = {"Côte d'Ivoire"}, ["CK"] = {"Cook Islands"}, ["CL"] = {"Chile"}, ["CM"] = {"Cameroon"}, ["CN"] = {"China"}, ["CO"] = {"Colombia"}, ["CP"] = {"Clipperton Island"}, ["CR"] = {"Costa Rica"}, ["CU"] = {"Cuba"}, ["CV"] = {"Cabo Verde", "Cape Verde"}, ["CW"] = {"Curaçao"}, ["CX"] = {"Christmas Island"}, ["CY"] = {"Cyprus"}, ["CZ"] = {"Czechia", "Czech Republic"}, ["DE"] = {"Germany"}, ["DG"] = {"Diego Garcia"}, ["DJ"] = {"Djibouti"}, ["DK"] = {"Denmark"}, ["DM"] = {"Dominica"}, ["DO"] = {"Dominican Republic"}, ["DZ"] = {"Algeria"}, ["EA"] = {"Ceuta, Melilla"}, ["EC"] = {"Ecuador"}, ["EE"] = {"Estonia"}, ["EG"] = {"Egypt"}, ["EH"] = {"Western Sahara"}, ["ER"] = {"Eritrea"}, ["ES"] = {"Spain"}, ["ET"] = {"Ethiopia"}, ["EU"] = {"European Union"}, ["EZ"] = {"Eurozone"}, ["FI"] = {"Finland"}, ["FJ"] = {"Fiji"}, ["FK"] = {"Falkland Islands (Malvinas)"}, ["FM"] = {"Federated States of Micronesia"}, ["FO"] = {"Faroe Islands"}, ["FR"] = {"France"}, ["GA"] = {"Gabon"}, ["GB"] = {"United Kingdom"}, ["GD"] = {"Grenada"}, ["GE"] = {"Georgia"}, ["GF"] = {"French Guiana"}, ["GG"] = {"Guernsey"}, ["GH"] = {"Ghana"}, ["GI"] = {"Gibraltar"}, ["GL"] = {"Greenland"}, ["GM"] = {"Gambia"}, ["GN"] = {"Guinea"}, ["GP"] = {"Guadeloupe"}, ["GQ"] = {"Equatorial Guinea"}, ["GR"] = {"Greece"}, ["GS"] = {"South Georgia and the South Sandwich Islands"}, ["GT"] = {"Guatemala"}, ["GU"] = {"Guam"}, ["GW"] = {"Guinea-Bissau"}, ["GY"] = {"Guyana"}, ["HK"] = {"Hong Kong"}, ["HM"] = {"Heard Island and McDonald Islands"}, ["HN"] = {"Honduras"}, ["HR"] = {"Croatia"}, ["HT"] = {"Haiti"}, ["HU"] = {"Hungary"}, ["IC"] = {"Canary Islands"}, ["ID"] = {"Indonesia"}, ["IE"] = {"Ireland"}, ["IL"] = {"Israel"}, ["IM"] = {"Isle of Man"}, ["IN"] = {"India"}, ["IO"] = {"British Indian Ocean Territory"}, ["IQ"] = {"Iraq"}, ["IR"] = {"Islamic Republic of Iran"}, ["IS"] = {"Iceland"}, ["IT"] = {"Italy"}, ["JE"] = {"Jersey"}, ["JM"] = {"Jamaica"}, ["JO"] = {"Jordan"}, ["JP"] = {"Japan"}, ["KE"] = {"Kenya"}, ["KG"] = {"Kyrgyzstan"}, ["KH"] = {"Cambodia"}, ["KI"] = {"Kiribati"}, ["KM"] = {"Comoros"}, ["KN"] = {"Saint Kitts and Nevis"}, ["KP"] = {"Democratic People's Republic of Korea"}, ["KR"] = {"Republic of Korea"}, ["KW"] = {"Kuwait"}, ["KY"] = {"Cayman Islands"}, ["KZ"] = {"Kazakhstan"}, ["LA"] = {"Lao People's Democratic Republic"}, ["LB"] = {"Lebanon"}, ["LC"] = {"Saint Lucia"}, ["LI"] = {"Liechtenstein"}, ["LK"] = {"Sri Lanka"}, ["LR"] = {"Liberia"}, ["LS"] = {"Lesotho"}, ["LT"] = {"Lithuania"}, ["LU"] = {"Luxembourg"}, ["LV"] = {"Latvia"}, ["LY"] = {"Libya"}, ["MA"] = {"Morocco"}, ["MC"] = {"Monaco"}, ["MD"] = {"Moldova"}, ["ME"] = {"Montenegro"}, ["MF"] = {"Saint Martin (French part)"}, ["MG"] = {"Madagascar"}, ["MH"] = {"Marshall Islands"}, ["MK"] = {"North Macedonia"}, ["ML"] = {"Mali"}, ["MM"] = {"Myanmar"}, ["MN"] = {"Mongolia"}, ["MO"] = {"Macao"}, ["MP"] = {"Northern Mariana Islands"}, ["MQ"] = {"Martinique"}, ["MR"] = {"Mauritania"}, ["MS"] = {"Montserrat"}, ["MT"] = {"Malta"}, ["MU"] = {"Mauritius"}, ["MV"] = {"Maldives"}, ["MW"] = {"Malawi"}, ["MX"] = {"Mexico"}, ["MY"] = {"Malaysia"}, ["MZ"] = {"Mozambique"}, ["NA"] = {"Namibia"}, ["NC"] = {"New Caledonia"}, ["NE"] = {"Niger"}, ["NF"] = {"Norfolk Island"}, ["NG"] = {"Nigeria"}, ["NI"] = {"Nicaragua"}, ["NL"] = {"Netherlands"}, ["NO"] = {"Norway"}, ["NP"] = {"Nepal"}, ["NR"] = {"Nauru"}, ["NU"] = {"Niue"}, ["NZ"] = {"New Zealand"}, ["OM"] = {"Oman"}, ["PA"] = {"Panama"}, ["PE"] = {"Peru"}, ["PF"] = {"French Polynesia"}, ["PG"] = {"Papua New Guinea"}, ["PH"] = {"Philippines"}, ["PK"] = {"Pakistan"}, ["PL"] = {"Poland"}, ["PM"] = {"Saint Pierre and Miquelon"}, ["PN"] = {"Pitcairn"}, ["PR"] = {"Puerto Rico"}, ["PS"] = {"State of Palestine"}, ["PT"] = {"Portugal"}, ["PW"] = {"Palau"}, ["PY"] = {"Paraguay"}, ["QA"] = {"Qatar"}, ["RE"] = {"Réunion"}, ["RO"] = {"Romania"}, ["RS"] = {"Serbia"}, ["RU"] = {"Russian Federation"}, ["RW"] = {"Rwanda"}, ["SA"] = {"Saudi Arabia"}, ["SB"] = {"Solomon Islands"}, ["SC"] = {"Seychelles"}, ["SD"] = {"Sudan"}, ["SE"] = {"Sweden"}, ["SG"] = {"Singapore"}, ["SH"] = {"Saint Helena, Ascension and Tristan da Cunha"}, ["SI"] = {"Slovenia"}, ["SJ"] = {"Svalbard and Jan Mayen"}, ["SK"] = {"Slovakia"}, ["SL"] = {"Sierra Leone"}, ["SM"] = {"San Marino"}, ["SN"] = {"Senegal"}, ["SO"] = {"Somalia"}, ["SR"] = {"Suriname"}, ["SS"] = {"South Sudan"}, ["ST"] = {"Sao Tome and Principe"}, ["SV"] = {"El Salvador"}, ["SX"] = {"Sint Maarten (Dutch part)"}, ["SY"] = {"Syrian Arab Republic"}, ["SZ"] = {"Eswatini", "eSwatini", "Swaziland"}, ["TA"] = {"Tristan da Cunha"}, ["TC"] = {"Turks and Caicos Islands"}, ["TD"] = {"Chad"}, ["TF"] = {"French Southern Territories"}, ["TG"] = {"Togo"}, ["TH"] = {"Thailand"}, ["TJ"] = {"Tajikistan"}, ["TK"] = {"Tokelau"}, ["TL"] = {"Timor-Leste"}, ["TM"] = {"Turkmenistan"}, ["TN"] = {"Tunisia"}, ["TO"] = {"Tonga"}, ["TR"] = {"Turkey"}, ["TT"] = {"Trinidad and Tobago"}, ["TV"] = {"Tuvalu"}, ["TW"] = {"Taiwan, Province of China"}, ["TZ"] = {"United Republic of Tanzania"}, ["UA"] = {"Ukraine"}, ["UG"] = {"Uganda"}, ["UM"] = {"United States Minor Outlying Islands"}, ["UN"] = {"United Nations"}, ["US"] = {"United States"}, ["UY"] = {"Uruguay"}, ["UZ"] = {"Uzbekistan"}, ["VA"] = {"Holy See (Vatican City State)"}, ["VC"] = {"Saint Vincent and the Grenadines"}, ["VE"] = {"Venezuela"}, ["VG"] = {"British Virgin Islands"}, ["VI"] = {"U.S. Virgin Islands"}, ["VN"] = {"Viet Nam"}, ["VU"] = {"Vanuatu"}, ["WF"] = {"Wallis and Futuna"}, ["WS"] = {"Samoa"}, ["YE"] = {"Yemen"}, ["YT"] = {"Mayotte"}, ["ZA"] = {"South Africa"}, ["ZM"] = {"Zambia"}, ["ZW"] = {"Zimbabwe"}, ["001"] = {"World"}, ["002"] = {"Africa"}, ["003"] = {"North America"}, ["005"] = {"South America"}, ["009"] = {"Oceania"}, ["011"] = {"Western Africa"}, ["013"] = {"Central America"}, ["014"] = {"Eastern Africa"}, ["015"] = {"Northern Africa"}, ["017"] = {"Middle Africa"}, ["018"] = {"Southern Africa"}, ["019"] = {"Americas"}, ["021"] = {"Northern America"}, ["029"] = {"Caribbean"}, ["030"] = {"Eastern Asia"}, ["034"] = {"Southern Asia"}, ["035"] = {"South-Eastern Asia"}, ["039"] = {"Southern Europe"}, ["053"] = {"Australia and New Zealand"}, ["054"] = {"Melanesia"}, ["057"] = {"Micronesia"}, ["061"] = {"Polynesia"}, ["142"] = {"Asia"}, ["143"] = {"Central Asia"}, ["145"] = {"Western Asia"}, ["150"] = {"Europe"}, ["151"] = {"Eastern Europe"}, ["154"] = {"Northern Europe"}, ["155"] = {"Western Europe"}, ["202"] = {"Sub-Saharan Africa"}, ["419"] = {"Latin America and the Caribbean"} } 0760a4c619ecc3b3f48799f6fe005e954b762dd2 Module:Language/data/iana variants 828 44 81 2024-01-03T21:22:14Z Laggardson 2 Created page with "-- File-Date: 2022-03-02 return { ["1606nict"] = { ["descriptions"] = {"Late Middle French (to 1606)"}, ["prefixes"] = {"frm"}, }, ["1694acad"] = { ["descriptions"] = {"Early Modern French"}, ["prefixes"] = {"fr"}, }, ["1901"] = { ["descriptions"] = {"Traditional German orthography"}, ["prefixes"] = {"de"}, }, ["1959acad"] = { ["descriptions"] = {"\"Academic\" (\"governmental\") variant of Belarusian as codified in 1959"}, ["prefixes"] = {"be"},..." Scribunto text/plain -- File-Date: 2022-03-02 return { ["1606nict"] = { ["descriptions"] = {"Late Middle French (to 1606)"}, ["prefixes"] = {"frm"}, }, ["1694acad"] = { ["descriptions"] = {"Early Modern French"}, ["prefixes"] = {"fr"}, }, ["1901"] = { ["descriptions"] = {"Traditional German orthography"}, ["prefixes"] = {"de"}, }, ["1959acad"] = { ["descriptions"] = {"\"Academic\" (\"governmental\") variant of Belarusian as codified in 1959"}, ["prefixes"] = {"be"}, }, ["1994"] = { ["descriptions"] = {"Standardized Resian orthography"}, ["prefixes"] = {"sl-rozaj", "sl-rozaj-biske", "sl-rozaj-njiva", "sl-rozaj-osojs", "sl-rozaj-solba"}, }, ["1996"] = { ["descriptions"] = {"German orthography of 1996"}, ["prefixes"] = {"de"}, }, ["abl1943"] = { ["descriptions"] = {"Orthographic formulation of 1943 - Official in Brazil (Formulário Ortográfico de 1943 - Oficial no Brasil)"}, ["prefixes"] = {"pt-br"}, }, ["akuapem"] = { ["descriptions"] = {"Akuapem Twi"}, ["prefixes"] = {"tw"}, }, ["alalc97"] = { ["descriptions"] = {"ALA-LC Romanization, 1997 edition"}, ["prefixes"] = {}, }, ["aluku"] = { ["descriptions"] = {"Aluku dialect", "Boni dialect"}, ["prefixes"] = {"djk"}, }, ["ao1990"] = { ["descriptions"] = {"Portuguese Language Orthographic Agreement of 1990 (Acordo Ortográfico da Língua Portuguesa de 1990)"}, ["prefixes"] = {"pt", "gl"}, }, ["aranes"] = { ["descriptions"] = {"Aranese"}, ["prefixes"] = {"oc"}, }, ["arkaika"] = { ["descriptions"] = {"Arcaicam Esperantom", "Arkaika Esperanto"}, ["prefixes"] = {"eo"}, }, ["asante"] = { ["descriptions"] = {"Asante Twi", "Ashanti Twi"}, ["prefixes"] = {"tw"}, }, ["auvern"] = { ["descriptions"] = {"Auvergnat"}, ["prefixes"] = {"oc"}, }, ["baku1926"] = { ["descriptions"] = {"Unified Turkic Latin Alphabet (Historical)"}, ["prefixes"] = {"az", "ba", "crh", "kk", "krc", "ky", "sah", "tk", "tt", "uz"}, }, ["balanka"] = { ["descriptions"] = {"The Balanka dialect of Anii"}, ["prefixes"] = {"blo"}, }, ["barla"] = { ["descriptions"] = {"The Barlavento dialect group of Kabuverdianu"}, ["prefixes"] = {"kea"}, }, ["basiceng"] = { ["descriptions"] = {"Basic English"}, ["prefixes"] = {"en"}, }, ["bauddha"] = { ["descriptions"] = {"Buddhist Hybrid Sanskrit"}, ["prefixes"] = {"sa"}, }, ["biscayan"] = { ["descriptions"] = {"Biscayan dialect of Basque"}, ["prefixes"] = {"eu"}, }, ["biske"] = { ["descriptions"] = {"The San Giorgio dialect of Resian", "The Bila dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["bohoric"] = { ["descriptions"] = {"Slovene in Bohorič alphabet"}, ["prefixes"] = {"sl"}, }, ["boont"] = { ["descriptions"] = {"Boontling"}, ["prefixes"] = {"en"}, }, ["bornholm"] = { ["descriptions"] = {"Bornholmsk"}, ["prefixes"] = {"da"}, }, ["cisaup"] = { ["descriptions"] = {"Cisalpine"}, ["prefixes"] = {"oc"}, }, ["colb1945"] = { ["descriptions"] = {"Portuguese-Brazilian Orthographic Convention of 1945 (Convenção Ortográfica Luso-Brasileira de 1945)"}, ["prefixes"] = {"pt"}, }, ["cornu"] = { ["descriptions"] = {"Cornu-English", "Cornish English", "Anglo-Cornish"}, ["prefixes"] = {"en"}, }, ["creiss"] = { ["descriptions"] = {"Occitan variants of the Croissant area"}, ["prefixes"] = {"oc"}, }, ["dajnko"] = { ["descriptions"] = {"Slovene in Dajnko alphabet"}, ["prefixes"] = {"sl"}, }, ["ekavsk"] = { ["descriptions"] = {"Serbian with Ekavian pronunciation"}, ["prefixes"] = {"sr", "sr-latn", "sr-cyrl"}, }, ["emodeng"] = { ["descriptions"] = {"Early Modern English (1500-1700)"}, ["prefixes"] = {"en"}, }, ["fonipa"] = { ["descriptions"] = {"International Phonetic Alphabet"}, ["prefixes"] = {}, }, ["fonkirsh"] = { ["descriptions"] = {"Kirshenbaum Phonetic Alphabet"}, ["prefixes"] = {}, }, ["fonnapa"] = { ["descriptions"] = {"North American Phonetic Alphabet", "Americanist Phonetic Notation"}, ["prefixes"] = {}, }, ["fonupa"] = { ["descriptions"] = {"Uralic Phonetic Alphabet"}, ["prefixes"] = {}, }, ["fonxsamp"] = { ["descriptions"] = {"X-SAMPA transcription"}, ["prefixes"] = {}, }, ["gallo"] = { ["descriptions"] = {"Gallo"}, ["prefixes"] = {"fr"}, }, ["gascon"] = { ["descriptions"] = {"Gascon"}, ["prefixes"] = {"oc"}, }, ["grclass"] = { ["descriptions"] = {"Classical Occitan orthography"}, ["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"}, }, ["grital"] = { ["descriptions"] = {"Italian-inspired Occitan orthography"}, ["prefixes"] = {"oc", "oc-cisaup", "oc-nicard", "oc-provenc"}, }, ["grmistr"] = { ["descriptions"] = {"Mistralian or Mistralian-inspired Occitan orthography"}, ["prefixes"] = {"oc", "oc-aranes", "oc-auvern", "oc-cisaup", "oc-creiss", "oc-gascon", "oc-lemosin", "oc-lengadoc", "oc-nicard", "oc-provenc", "oc-vivaraup"}, }, ["hepburn"] = { ["descriptions"] = {"Hepburn romanization"}, ["prefixes"] = {"ja-latn"}, }, ["hognorsk"] = { ["descriptions"] = {"Norwegian in Høgnorsk (High Norwegian) orthography"}, ["prefixes"] = {"nn"}, }, ["hsistemo"] = { ["descriptions"] = {"Standard H-system orthographic fallback for spelling Esperanto"}, ["prefixes"] = {"eo"}, }, ["ijekavsk"] = { ["descriptions"] = {"Serbian with Ijekavian pronunciation"}, ["prefixes"] = {"sr", "sr-latn", "sr-cyrl"}, }, ["itihasa"] = { ["descriptions"] = {"Epic Sanskrit"}, ["prefixes"] = {"sa"}, }, ["ivanchov"] = { ["descriptions"] = {"Bulgarian in 1899 orthography"}, ["prefixes"] = {"bg"}, }, ["jauer"] = { ["descriptions"] = {"Jauer dialect of Romansh"}, ["prefixes"] = {"rm"}, }, ["jyutping"] = { ["descriptions"] = {"Jyutping Cantonese Romanization"}, ["prefixes"] = {"yue"}, }, ["kkcor"] = { ["descriptions"] = {"Common Cornish orthography of Revived Cornish"}, ["prefixes"] = {"kw"}, }, ["kociewie"] = { ["descriptions"] = {"The Kociewie dialect of Polish"}, ["prefixes"] = {"pl"}, }, ["kscor"] = { ["descriptions"] = {"Standard Cornish orthography of Revived Cornish", "Kernowek Standard"}, ["prefixes"] = {"kw"}, }, ["laukika"] = { ["descriptions"] = {"Classical Sanskrit"}, ["prefixes"] = {"sa"}, }, ["lemosin"] = { ["descriptions"] = {"Limousin"}, ["prefixes"] = {"oc"}, }, ["lengadoc"] = { ["descriptions"] = {"Languedocien"}, ["prefixes"] = {"oc"}, }, ["lipaw"] = { ["descriptions"] = {"The Lipovaz dialect of Resian", "The Lipovec dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["luna1918"] = { ["descriptions"] = {"Post-1917 Russian orthography"}, ["prefixes"] = {"ru"}, }, ["metelko"] = { ["descriptions"] = {"Slovene in Metelko alphabet"}, ["prefixes"] = {"sl"}, }, ["monoton"] = { ["descriptions"] = {"Monotonic Greek"}, ["prefixes"] = {"el"}, }, ["ndyuka"] = { ["descriptions"] = {"Ndyuka dialect", "Aukan dialect"}, ["prefixes"] = {"djk"}, }, ["nedis"] = { ["descriptions"] = {"Natisone dialect", "Nadiza dialect"}, ["prefixes"] = {"sl"}, }, ["newfound"] = { ["descriptions"] = {"Newfoundland English"}, ["prefixes"] = {"en-ca"}, }, ["nicard"] = { ["descriptions"] = {"Niçard"}, ["prefixes"] = {"oc"}, }, ["njiva"] = { ["descriptions"] = {"The Gniva dialect of Resian", "The Njiva dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["nulik"] = { ["descriptions"] = {"Volapük nulik", "Volapük perevidöl", "Volapük nulädik", "de Jong's Volapük", "New Volapük", "Revised Volapük", "Modern Volapük"}, ["prefixes"] = {"vo"}, }, ["osojs"] = { ["descriptions"] = {"The Oseacco dialect of Resian", "The Osojane dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["oxendict"] = { ["descriptions"] = {"Oxford English Dictionary spelling"}, ["prefixes"] = {"en"}, }, ["pahawh2"] = { ["descriptions"] = {"Pahawh Hmong Second Stage Reduced orthography"}, ["prefixes"] = {"mww", "hnj"}, }, ["pahawh3"] = { ["descriptions"] = {"Pahawh Hmong Third Stage Reduced orthography"}, ["prefixes"] = {"mww", "hnj"}, }, ["pahawh4"] = { ["descriptions"] = {"Pahawh Hmong Final Version orthography"}, ["prefixes"] = {"mww", "hnj"}, }, ["pamaka"] = { ["descriptions"] = {"Pamaka dialect"}, ["prefixes"] = {"djk"}, }, ["peano"] = { ["descriptions"] = {"Latino Sine Flexione", "Interlingua de API", "Interlingua de Peano"}, ["prefixes"] = {"la"}, }, ["petr1708"] = { ["descriptions"] = {"Petrine orthography"}, ["prefixes"] = {"ru"}, }, ["pinyin"] = { ["descriptions"] = {"Pinyin romanization"}, ["prefixes"] = {"zh-latn", "bo-latn"}, }, ["polyton"] = { ["descriptions"] = {"Polytonic Greek"}, ["prefixes"] = {"el"}, }, ["provenc"] = { ["descriptions"] = {"Provençal"}, ["prefixes"] = {"oc"}, }, ["puter"] = { ["descriptions"] = {"Puter idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["rigik"] = { ["descriptions"] = {"Volapük rigik", "Schleyer's Volapük", "Original Volapük", "Classic Volapük"}, ["prefixes"] = {"vo"}, }, ["rozaj"] = { ["descriptions"] = {"Resian", "Resianic", "Rezijan"}, ["prefixes"] = {"sl"}, }, ["rumgr"] = { ["descriptions"] = {"Rumantsch Grischun"}, ["prefixes"] = {"rm"}, }, ["scotland"] = { ["descriptions"] = {"Scottish Standard English"}, ["prefixes"] = {"en"}, }, ["scouse"] = { ["descriptions"] = {"Scouse"}, ["prefixes"] = {"en"}, }, ["simple"] = { ["descriptions"] = {"Simplified form"}, ["prefixes"] = {}, }, ["solba"] = { ["descriptions"] = {"The Stolvizza dialect of Resian", "The Solbica dialect of Resian"}, ["prefixes"] = {"sl-rozaj"}, }, ["sotav"] = { ["descriptions"] = {"The Sotavento dialect group of Kabuverdianu"}, ["prefixes"] = {"kea"}, }, ["spanglis"] = { ["descriptions"] = {"Spanglish"}, ["prefixes"] = {"en", "es"}, }, ["surmiran"] = { ["descriptions"] = {"Surmiran idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["sursilv"] = { ["descriptions"] = {"Sursilvan idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["sutsilv"] = { ["descriptions"] = {"Sutsilvan idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["synnejyl"] = { ["descriptions"] = {"Synnejysk", "South Jutish"}, ["prefixes"] = {"da"}, }, ["tarask"] = { ["descriptions"] = {"Belarusian in Taraskievica orthography"}, ["prefixes"] = {"be"}, }, ["tongyong"] = { ["descriptions"] = {"Tongyong Pinyin romanization"}, ["prefixes"] = {"zh-latn"}, }, ["tunumiit"] = { ["descriptions"] = {"Tunumiisiut", "East Greenlandic", "Østgrønlandsk"}, ["prefixes"] = {"kl"}, }, ["uccor"] = { ["descriptions"] = {"Unified Cornish orthography of Revived Cornish"}, ["prefixes"] = {"kw"}, }, ["ucrcor"] = { ["descriptions"] = {"Unified Cornish Revised orthography of Revived Cornish"}, ["prefixes"] = {"kw"}, }, ["ulster"] = { ["descriptions"] = {"Ulster dialect of Scots"}, ["prefixes"] = {"sco"}, }, ["unifon"] = { ["descriptions"] = {"Unifon phonetic alphabet"}, ["prefixes"] = {"en", "hup", "kyh", "tol", "yur"}, }, ["vaidika"] = { ["descriptions"] = {"Vedic Sanskrit"}, ["prefixes"] = {"sa"}, }, ["valencia"] = { ["descriptions"] = {"Valencian"}, ["prefixes"] = {"ca"}, }, ["vallader"] = { ["descriptions"] = {"Vallader idiom of Romansh"}, ["prefixes"] = {"rm"}, }, ["vecdruka"] = { ["descriptions"] = {"Latvian orthography used before 1920s (\"vecā druka\")"}, ["prefixes"] = {"lv"}, }, ["vivaraup"] = { ["descriptions"] = {"Vivaro-Alpine"}, ["prefixes"] = {"oc"}, }, ["wadegile"] = { ["descriptions"] = {"Wade-Giles romanization"}, ["prefixes"] = {"zh-latn"}, }, ["xsistemo"] = { ["descriptions"] = {"Standard X-system orthographic fallback for spelling Esperanto"}, ["prefixes"] = {"eo"}, } } 2eee5b02799b8bf67ba5f8d7191df7eb5c475d91 Module:Language/data/iana suppressed scripts 828 45 82 2024-01-03T21:24:49Z Laggardson 2 Created page with "-- File-Date: 2022-03-02 return { ["Arab"] = {"ar", "fa", "ps", "ur"}, ["Armn"] = {"hy"}, ["Beng"] = {"as", "bn"}, ["Blis"] = {"zbl"}, ["Cyrl"] = {"ab", "be", "bg", "kk", "mk", "ru", "uk"}, ["Deva"] = {"hi", "mr", "ne", "kok", "mai"}, ["Ethi"] = {"am", "ti"}, ["Geor"] = {"ka"}, ["Grek"] = {"el"}, ["Gujr"] = {"gu"}, ["Guru"] = {"pa"}, ["Hebr"] = {"he", "iw", "yi"}, ["Jpan"] = {"ja"}, ["Khmr"] = {"km"}, ["Knda"] = {"kn"}, ["Kore"] = {"ko"}, ["Laoo"] = {"lo..." Scribunto text/plain -- File-Date: 2022-03-02 return { ["Arab"] = {"ar", "fa", "ps", "ur"}, ["Armn"] = {"hy"}, ["Beng"] = {"as", "bn"}, ["Blis"] = {"zbl"}, ["Cyrl"] = {"ab", "be", "bg", "kk", "mk", "ru", "uk"}, ["Deva"] = {"hi", "mr", "ne", "kok", "mai"}, ["Ethi"] = {"am", "ti"}, ["Geor"] = {"ka"}, ["Grek"] = {"el"}, ["Gujr"] = {"gu"}, ["Guru"] = {"pa"}, ["Hebr"] = {"he", "iw", "yi"}, ["Jpan"] = {"ja"}, ["Khmr"] = {"km"}, ["Knda"] = {"kn"}, ["Kore"] = {"ko"}, ["Laoo"] = {"lo"}, ["Latn"] = {"af", "ay", "bs", "ca", "ch", "cs", "cy", "da", "de", "en", "eo", "es", "et", "eu", "fi", "fj", "fo", "fr", "fy", "ga", "gl", "gn", "gv", "hr", "ht", "hu", "id", "in", "is", "it", "kl", "la", "lb", "ln", "lt", "lv", "mg", "mh", "mo", "ms", "mt", "na", "nb", "nd", "nl", "nn", "no", "nr", "ny", "om", "pl", "pt", "qu", "rm", "rn", "ro", "rw", "sg", "sk", "sl", "sm", "so", "sq", "ss", "st", "sv", "sw", "tl", "tn", "to", "tr", "ts", "ve", "vi", "xh", "zu", "dsb", "frr", "frs", "gsw", "hsb", "men", "nds", "niu", "nso", "tem", "tkl", "tmh", "tpi", "tvl"}, ["Mlym"] = {"ml"}, ["Mymr"] = {"my"}, ["Nkoo"] = {"nqo"}, ["Orya"] = {"or"}, ["Sinh"] = {"si"}, ["Taml"] = {"ta"}, ["Telu"] = {"te"}, ["Thaa"] = {"dv"}, ["Thai"] = {"th"}, ["Tibt"] = {"dz"} } d0aff91de58e25f97ceb74982eabd84842790a99 Module:Lang/ISO 639 synonyms 828 46 83 2024-01-03T21:27:15Z Laggardson 2 Created page with "-- File-Date: 2013-01-11 return { ["aar"] = "aa", ["abk"] = "ab", ["afr"] = "af", ["aka"] = "ak", ["amh"] = "am", ["ara"] = "ar", ["arg"] = "an", ["asm"] = "as", ["ava"] = "av", ["ave"] = "ae", ["aym"] = "ay", ["aze"] = "az", ["bak"] = "ba", ["bam"] = "bm", ["bel"] = "be", ["ben"] = "bn", ["bih"] = "bh", ["bis"] = "bi", ["bod"] = "bo", ["bos"] = "bs", ["bre"] = "br", ["bul"] = "bg", ["cat"] = "ca", ["ces"] = "cs", ["cha"] = "ch", ["che"] = "ce",..." Scribunto text/plain -- File-Date: 2013-01-11 return { ["aar"] = "aa", ["abk"] = "ab", ["afr"] = "af", ["aka"] = "ak", ["amh"] = "am", ["ara"] = "ar", ["arg"] = "an", ["asm"] = "as", ["ava"] = "av", ["ave"] = "ae", ["aym"] = "ay", ["aze"] = "az", ["bak"] = "ba", ["bam"] = "bm", ["bel"] = "be", ["ben"] = "bn", ["bih"] = "bh", ["bis"] = "bi", ["bod"] = "bo", ["bos"] = "bs", ["bre"] = "br", ["bul"] = "bg", ["cat"] = "ca", ["ces"] = "cs", ["cha"] = "ch", ["che"] = "ce", ["chu"] = "cu", ["chv"] = "cv", ["cor"] = "kw", ["cos"] = "co", ["cre"] = "cr", ["cym"] = "cy", ["dan"] = "da", ["deu"] = "de", ["div"] = "dv", ["dzo"] = "dz", ["ell"] = "el", ["eng"] = "en", ["epo"] = "eo", ["est"] = "et", ["eus"] = "eu", ["ewe"] = "ee", ["fao"] = "fo", ["fas"] = "fa", ["fij"] = "fj", ["fin"] = "fi", ["fra"] = "fr", ["fry"] = "fy", ["ful"] = "ff", ["gla"] = "gd", ["gle"] = "ga", ["glg"] = "gl", ["glv"] = "gv", ["grn"] = "gn", ["guj"] = "gu", ["hat"] = "ht", ["hau"] = "ha", ["heb"] = "he", ["her"] = "hz", ["hin"] = "hi", ["hmo"] = "ho", ["hrv"] = "hr", ["hun"] = "hu", ["hye"] = "hy", ["ibo"] = "ig", ["ido"] = "io", ["iii"] = "ii", ["iku"] = "iu", ["ile"] = "ie", ["ina"] = "ia", ["ind"] = "id", ["ipk"] = "ik", ["isl"] = "is", ["ita"] = "it", ["jav"] = "jv", ["jpn"] = "ja", ["kal"] = "kl", ["kan"] = "kn", ["kas"] = "ks", ["kat"] = "ka", ["kau"] = "kr", ["kaz"] = "kk", ["khm"] = "km", ["kik"] = "ki", ["kin"] = "rw", ["kir"] = "ky", ["kom"] = "kv", ["kon"] = "kg", ["kor"] = "ko", ["kua"] = "kj", ["kur"] = "ku", ["lao"] = "lo", ["lat"] = "la", ["lav"] = "lv", ["lim"] = "li", ["lin"] = "ln", ["lit"] = "lt", ["ltz"] = "lb", ["lub"] = "lu", ["lug"] = "lg", ["mah"] = "mh", ["mal"] = "ml", ["mar"] = "mr", ["mkd"] = "mk", ["mlg"] = "mg", ["mlt"] = "mt", ["mon"] = "mn", ["mri"] = "mi", ["msa"] = "ms", ["mya"] = "my", ["nau"] = "na", ["nav"] = "nv", ["nbl"] = "nr", ["nde"] = "nd", ["ndo"] = "ng", ["nep"] = "ne", ["nld"] = "nl", ["nno"] = "nn", ["nob"] = "nb", ["nor"] = "no", ["nya"] = "ny", ["oci"] = "oc", ["oji"] = "oj", ["ori"] = "or", ["orm"] = "om", ["oss"] = "os", ["pan"] = "pa", ["pli"] = "pi", ["pol"] = "pl", ["por"] = "pt", ["pus"] = "ps", ["que"] = "qu", ["roh"] = "rm", ["ron"] = "ro", ["run"] = "rn", ["rus"] = "ru", ["sag"] = "sg", ["san"] = "sa", ["sin"] = "si", ["slk"] = "sk", ["slv"] = "sl", ["sme"] = "se", ["smo"] = "sm", ["sna"] = "sn", ["snd"] = "sd", ["som"] = "so", ["sot"] = "st", ["spa"] = "es", ["sqi"] = "sq", ["srd"] = "sc", ["srp"] = "sr", ["ssw"] = "ss", ["sun"] = "su", ["swa"] = "sw", ["swe"] = "sv", ["tah"] = "ty", ["tam"] = "ta", ["tat"] = "tt", ["tel"] = "te", ["tgk"] = "tg", ["tgl"] = "tl", ["tha"] = "th", ["tir"] = "ti", ["ton"] = "to", ["tsn"] = "tn", ["tso"] = "ts", ["tuk"] = "tk", ["tur"] = "tr", ["twi"] = "tw", ["uig"] = "ug", ["ukr"] = "uk", ["urd"] = "ur", ["uzb"] = "uz", ["ven"] = "ve", ["vie"] = "vi", ["vol"] = "vo", ["wln"] = "wa", ["wol"] = "wo", ["xho"] = "xh", ["yid"] = "yi", ["yor"] = "yo", ["zha"] = "za", ["zho"] = "zh", ["zul"] = "zu" } f3fb5374c9e0fdef6ce6ea22736b79468358ca19 Module:Math 828 47 84 2024-01-03T21:28:23Z Laggardson 2 Created page with "--[[ This module provides a number of basic mathematical operations. ]] local yesno, getArgs -- lazily initialized local p = {} -- Holds functions to be returned from #invoke, and functions to make available to other Lua modules. local wrap = {} -- Holds wrapper functions that process arguments from #invoke. These act as intemediary between functions meant for #invoke and functions meant for Lua. --[[ Helper functions used to avoid redundant code. ]] local function..." Scribunto text/plain --[[ This module provides a number of basic mathematical operations. ]] local yesno, getArgs -- lazily initialized local p = {} -- Holds functions to be returned from #invoke, and functions to make available to other Lua modules. local wrap = {} -- Holds wrapper functions that process arguments from #invoke. These act as intemediary between functions meant for #invoke and functions meant for Lua. --[[ Helper functions used to avoid redundant code. ]] local function err(msg) -- Generates wikitext error messages. return mw.ustring.format('<strong class="error">Formatting error: %s</strong>', msg) end local function unpackNumberArgs(args) -- Returns an unpacked list of arguments specified with numerical keys. local ret = {} for k, v in pairs(args) do if type(k) == 'number' then table.insert(ret, v) end end return unpack(ret) end local function makeArgArray(...) -- Makes an array of arguments from a list of arguments that might include nils. local args = {...} -- Table of arguments. It might contain nils or non-number values, so we can't use ipairs. local nums = {} -- Stores the numbers of valid numerical arguments. local ret = {} for k, v in pairs(args) do v = p._cleanNumber(v) if v then nums[#nums + 1] = k args[k] = v end end table.sort(nums) for i, num in ipairs(nums) do ret[#ret + 1] = args[num] end return ret end local function fold(func, ...) -- Use a function on all supplied arguments, and return the result. The function must accept two numbers as parameters, -- and must return a number as an output. This number is then supplied as input to the next function call. local vals = makeArgArray(...) local count = #vals -- The number of valid arguments if count == 0 then return -- Exit if we have no valid args, otherwise removing the first arg would cause an error. nil, 0 end local ret = table.remove(vals, 1) for _, val in ipairs(vals) do ret = func(ret, val) end return ret, count end --[[ Fold arguments by selectively choosing values (func should return when to choose the current "dominant" value). ]] local function binary_fold(func, ...) local value = fold((function(a, b) if func(a, b) then return a else return b end end), ...) return value end --[[ random Generate a random number Usage: {{#invoke: Math | random }} {{#invoke: Math | random | maximum value }} {{#invoke: Math | random | minimum value | maximum value }} ]] function wrap.random(args) local first = p._cleanNumber(args[1]) local second = p._cleanNumber(args[2]) return p._random(first, second) end function p._random(first, second) math.randomseed(mw.site.stats.edits + mw.site.stats.pages + os.time() + math.floor(os.clock() * 1000000000)) -- math.random will throw an error if given an explicit nil parameter, so we need to use if statements to check the params. if first and second then if first <= second then -- math.random doesn't allow the first number to be greater than the second. return math.random(first, second) end elseif first then return math.random(first) else return math.random() end end --[[ order Determine order of magnitude of a number Usage: {{#invoke: Math | order | value }} ]] function wrap.order(args) local input_string = (args[1] or args.x or '0'); local input_number = p._cleanNumber(input_string); if input_number == nil then return err('order of magnitude input appears non-numeric') else return p._order(input_number) end end function p._order(x) if x == 0 then return 0 end return math.floor(math.log10(math.abs(x))) end --[[ precision Detemines the precision of a number using the string representation Usage: {{ #invoke: Math | precision | value }} ]] function wrap.precision(args) local input_string = (args[1] or args.x or '0'); local trap_fraction = args.check_fraction; local input_number; if not yesno then yesno = require('Module:Yesno') end if yesno(trap_fraction, true) then -- Returns true for all input except nil, false, "no", "n", "0" and a few others. See [[Module:Yesno]]. local pos = string.find(input_string, '/', 1, true); if pos ~= nil then if string.find(input_string, '/', pos + 1, true) == nil then local denominator = string.sub(input_string, pos+1, -1); local denom_value = tonumber(denominator); if denom_value ~= nil then return math.log10(denom_value); end end end end input_number, input_string = p._cleanNumber(input_string); if input_string == nil then return err('precision input appears non-numeric') else return p._precision(input_string) end end function p._precision(x) if type(x) == 'number' then x = tostring(x) end x = string.upper(x) local decimal = x:find('%.') local exponent_pos = x:find('E') local result = 0; if exponent_pos ~= nil then local exponent = string.sub(x, exponent_pos + 1) x = string.sub(x, 1, exponent_pos - 1) result = result - tonumber(exponent) end if decimal ~= nil then result = result + string.len(x) - decimal return result end local pos = string.len(x); while x:byte(pos) == string.byte('0') do pos = pos - 1 result = result - 1 if pos <= 0 then return 0 end end return result end --[[ max Finds the maximum argument Usage: {{#invoke:Math| max | value1 | value2 | ... }} Note, any values that do not evaluate to numbers are ignored. ]] function wrap.max(args) return p._max(unpackNumberArgs(args)) end function p._max(...) local max_value = binary_fold((function(a, b) return a > b end), ...) if max_value then return max_value end end --[[ median Find the median of set of numbers Usage: {{#invoke:Math | median | number1 | number2 | ...}} OR {{#invoke:Math | median }} ]] function wrap.median(args) return p._median(unpackNumberArgs(args)) end function p._median(...) local vals = makeArgArray(...) local count = #vals table.sort(vals) if count == 0 then return 0 end if p._mod(count, 2) == 0 then return (vals[count/2] + vals[count/2+1])/2 else return vals[math.ceil(count/2)] end end --[[ min Finds the minimum argument Usage: {{#invoke:Math| min | value1 | value2 | ... }} OR {{#invoke:Math| min }} When used with no arguments, it takes its input from the parent frame. Note, any values that do not evaluate to numbers are ignored. ]] function wrap.min(args) return p._min(unpackNumberArgs(args)) end function p._min(...) local min_value = binary_fold((function(a, b) return a < b end), ...) if min_value then return min_value end end --[[ sum Finds the sum Usage: {{#invoke:Math| sum | value1 | value2 | ... }} OR {{#invoke:Math| sum }} Note, any values that do not evaluate to numbers are ignored. ]] function wrap.sum(args) return p._sum(unpackNumberArgs(args)) end function p._sum(...) local sums, count = fold((function(a, b) return a + b end), ...) if not sums then return 0 else return sums end end --[[ average Finds the average Usage: {{#invoke:Math| average | value1 | value2 | ... }} OR {{#invoke:Math| average }} Note, any values that do not evaluate to numbers are ignored. ]] function wrap.average(args) return p._average(unpackNumberArgs(args)) end function p._average(...) local sum, count = fold((function(a, b) return a + b end), ...) if not sum then return 0 else return sum / count end end --[[ round Rounds a number to specified precision Usage: {{#invoke:Math | round | value | precision }} --]] function wrap.round(args) local value = p._cleanNumber(args[1] or args.value or 0) local precision = p._cleanNumber(args[2] or args.precision or 0) if value == nil or precision == nil then return err('round input appears non-numeric') else return p._round(value, precision) end end function p._round(value, precision) local rescale = math.pow(10, precision or 0); return math.floor(value * rescale + 0.5) / rescale; end --[[ log10 returns the log (base 10) of a number Usage: {{#invoke:Math | log10 | x }} ]] function wrap.log10(args) return math.log10(args[1]) end --[[ mod Implements the modulo operator Usage: {{#invoke:Math | mod | x | y }} --]] function wrap.mod(args) local x = p._cleanNumber(args[1]) local y = p._cleanNumber(args[2]) if not x then return err('first argument to mod appears non-numeric') elseif not y then return err('second argument to mod appears non-numeric') else return p._mod(x, y) end end function p._mod(x, y) local ret = x % y if not (0 <= ret and ret < y) then ret = 0 end return ret end --[[ gcd Calculates the greatest common divisor of multiple numbers Usage: {{#invoke:Math | gcd | value 1 | value 2 | value 3 | ... }} --]] function wrap.gcd(args) return p._gcd(unpackNumberArgs(args)) end function p._gcd(...) local function findGcd(a, b) local r = b local oldr = a while r ~= 0 do local quotient = math.floor(oldr / r) oldr, r = r, oldr - quotient * r end if oldr < 0 then oldr = oldr * -1 end return oldr end local result, count = fold(findGcd, ...) return result end --[[ precision_format Rounds a number to the specified precision and formats according to rules originally used for {{template:Rnd}}. Output is a string. Usage: {{#invoke: Math | precision_format | number | precision }} ]] function wrap.precision_format(args) local value_string = args[1] or 0 local precision = args[2] or 0 return p._precision_format(value_string, precision) end function p._precision_format(value_string, precision) -- For access to Mediawiki built-in formatter. local lang = mw.getContentLanguage(); local value value, value_string = p._cleanNumber(value_string) precision = p._cleanNumber(precision) -- Check for non-numeric input if value == nil or precision == nil then return err('invalid input when rounding') end local current_precision = p._precision(value) local order = p._order(value) -- Due to round-off effects it is neccesary to limit the returned precision under -- some circumstances because the terminal digits will be inaccurately reported. if order + precision >= 14 then if order + p._precision(value_string) >= 14 then precision = 13 - order; end end -- If rounding off, truncate extra digits if precision < current_precision then value = p._round(value, precision) current_precision = p._precision(value) end local formatted_num = lang:formatNum(math.abs(value)) local sign -- Use proper unary minus sign rather than ASCII default if value < 0 then sign = '−' else sign = '' end -- Handle cases requiring scientific notation if string.find(formatted_num, 'E', 1, true) ~= nil or math.abs(order) >= 9 then value = value * math.pow(10, -order) current_precision = current_precision + order precision = precision + order formatted_num = lang:formatNum(math.abs(value)) else order = 0; end formatted_num = sign .. formatted_num -- Pad with zeros, if needed if current_precision < precision then local padding if current_precision <= 0 then if precision > 0 then local zero_sep = lang:formatNum(1.1) formatted_num = formatted_num .. zero_sep:sub(2,2) padding = precision if padding > 20 then padding = 20 end formatted_num = formatted_num .. string.rep('0', padding) end else padding = precision - current_precision if padding > 20 then padding = 20 end formatted_num = formatted_num .. string.rep('0', padding) end end -- Add exponential notation, if necessary. if order ~= 0 then -- Use proper unary minus sign rather than ASCII default if order < 0 then order = '−' .. lang:formatNum(math.abs(order)) else order = lang:formatNum(order) end formatted_num = formatted_num .. '<span style="margin:0 .15em 0 .25em">×</span>10<sup>' .. order .. '</sup>' end return formatted_num end --[[ divide Implements the division operator Usage: {{#invoke:Math | divide | x | y | round= | precision= }} --]] function wrap.divide(args) local x = args[1] local y = args[2] local round = args.round local precision = args.precision if not yesno then yesno = require('Module:Yesno') end return p._divide(x, y, yesno(round), precision) end function p._divide(x, y, round, precision) if y == nil or y == "" then return err("Empty divisor") elseif not tonumber(y) then if type(y) == 'string' and string.sub(y, 1, 1) == '<' then return y else return err("Not a number: " .. y) end elseif x == nil or x == "" then return err("Empty dividend") elseif not tonumber(x) then if type(x) == 'string' and string.sub(x, 1, 1) == '<' then return x else return err("Not a number: " .. x) end else local z = x / y if round then return p._round(z, 0) elseif precision then return p._round(z, precision) else return z end end end --[[ Helper function that interprets the input numerically. If the input does not appear to be a number, attempts evaluating it as a parser functions expression. ]] function p._cleanNumber(number_string) if type(number_string) == 'number' then -- We were passed a number, so we don't need to do any processing. return number_string, tostring(number_string) elseif type(number_string) ~= 'string' or not number_string:find('%S') then -- We were passed a non-string or a blank string, so exit. return nil, nil; end -- Attempt basic conversion local number = tonumber(number_string) -- If failed, attempt to evaluate input as an expression if number == nil then local success, result = pcall(mw.ext.ParserFunctions.expr, number_string) if success then number = tonumber(result) number_string = tostring(number) else number = nil number_string = nil end else number_string = number_string:match("^%s*(.-)%s*$") -- String is valid but may contain padding, clean it. number_string = number_string:match("^%+(.*)$") or number_string -- Trim any leading + signs. if number_string:find('^%-?0[xX]') then -- Number is using 0xnnn notation to indicate base 16; use the number that Lua detected instead. number_string = tostring(number) end end return number, number_string end --[[ Wrapper function that does basic argument processing. This ensures that all functions from #invoke can use either the current frame or the parent frame, and it also trims whitespace for all arguments and removes blank arguments. ]] local mt = { __index = function(t, k) return function(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return wrap[k](getArgs(frame)) -- Argument processing is left to Module:Arguments. Whitespace is trimmed and blank arguments are removed. end end } return setmetatable(p, mt) 2bbe734d898299f65412963a3c1782e9fcc4d9ca Module:Table empty cell 828 48 85 2024-01-03T21:29:19Z Laggardson 2 Created page with "local p = {} -- List of default title texts. local defaultTitleTextlist = { ["TBA"] = "To be announced", ["TBD"] = "To be determined", ["N/A"] = "Not available" } -- Local function which is used to retrieve the title text. local function getTitleText(args, altText) local titleText = args[2] or args["title_text"] -- If the title text was manually added, return it. if (titleText) then return titleText end -- The title text was not set, get the correct defau..." Scribunto text/plain local p = {} -- List of default title texts. local defaultTitleTextlist = { ["TBA"] = "To be announced", ["TBD"] = "To be determined", ["N/A"] = "Not available" } -- Local function which is used to retrieve the title text. local function getTitleText(args, altText) local titleText = args[2] or args["title_text"] -- If the title text was manually added, return it. if (titleText) then return titleText end -- The title text was not set, get the correct default text which corresponds to the alt text. for k, v in pairs(defaultTitleTextlist) do if (altText == k) then return v end end end -- Local function which is used to retrieve the alt text. local function getAltText(args) local altText = args[1] or args["alt_text"] if (altText == nil) then altText = "TBA" end return altText end -- Local function which does the actual main process. function p._main(args) local altText = getAltText(args) local titleText = getTitleText(args, altText) return "<small style=\"color: #2C2C2C\" title=\"" .. titleText .. "\">" .. altText .. "</small>" end --[[ Public function which is used to create information for an empty text cell. Parameters: -- |1= or |alt_text= — optional; The text which will be written in the cell. -- |2= or |title_text= — optional; The text which will be shown when hovering over the cell. --]] function p.main(frame) local getArgs = require('Module:Arguments').getArgs; local args = getArgs(frame); return p._main(args) end return p ac2d0497cb14c149d19c3d72f0f81006080f338a List of Fate episodes 0 10 86 16 2024-01-03T21:32:19Z Laggardson 2 wikitext text/x-wiki Episodes of Season 1: ''[[Fate]]'', which ran from March, 2019 to October, 2019. {{Episode table | background=#FFB27B | season=1 | title=15 | airdate=10 | aux2=9 | aux2T=Runtime |episodes= {{Episode list |EpisodeNumber2=01 |Title=[[Fate 01: The Dirge Pt. 1|The Dirge Pt. 1]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=02 |Title=[[Marielda 02: The City of Light Pt. 2|The City of Light Pt. 2]] |AltDate=July 21, 2016 |Aux2=01:55:20 |ShortSummary=Marielda's quiet year continues, from the coming of the [[Pala-din]] in midsummer to the threat of the Frost Shepherds' winter arrival. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=03 |Title=[[Marielda 03: The Crosstown Job Pt. 1|The Crosstown Job Pt. 1]] |AltDate=August 5, 2016 |Aux2=02:37:15 |ShortSummary=Ali, Jack, Sylvi and Dre build their characters and their crew, [[The Six]], before embarking on their first heist: stealing the plates that control Marielda's new crosstown train. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=04 |Title=[[Marielda 04: The Crosstown Job Pt. 2|The Crosstown Job Pt. 2]] |AltDate=August 11, 2016 |Aux2=02:05:04 |ShortSummary=Aboard a rushing train fifty stories over Helianthus Parish, the members of The Six continue their attempt to steal the navigation plates of the Crosstown Express. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=05 |Title=[[Marielda 05: War and Azaleas|War and Azaleas]] |AltDate=August 19, 2016 |Aux2=01:29:30 |ShortSummary=The members of have some downtime after their successful heist, but begin to entangle themselves in the consequences of the criminal life. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=06 |Title=[[Marielda 06: The Valentine Affair Pt. 1|The Valentine Affair Pt. 1]] |AltDate=August 25, 2016 |Aux2=01:44:57 |ShortSummary=Looking for help to end their war with the [[Fontmen]], The Six embark upon a plan to steal a book from the famously guarded [[Memoriam College (Marielda)|Memoriam College]]. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=07 |Title=[[Marielda 07: The Valentine Affair Pt. 2|The Valentine Affair Pt. 2]] |AltDate=September 1, 2016 |Aux2=01:37:19 |ShortSummary=[[Aubrey]], [[Sige]] and [[Castille]] enter the library, where they face off with the [[Yellow House]]. Meanwhile, a traumatized [[Hitchcock]] makes his way to the rectory. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=08 |Title=[[Marielda 08: The Valentine Affair Pt. 3|The Valentine Affair Pt. 3]] |AltDate=September 9, 2016 |Aux2=01:57:15 |ShortSummary=The gang frees [[Maelgwyn]] from the library vault. Hitchcock has troubling dreams before finding himself running with [[Caroline Fair-Play]] from a [[Rector Sabinia|void nun]]. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=09 |Title=[[Marielda 09: The Valentine Affair Pt. 4|The Valentine Affair Pt. 4]] |AltDate=September 15, 2016 |Aux2=01:41:48 |ShortSummary=As the situation in and around Memoriam College gets increasingly unstable, the members of The Six do their best to escape with a stolen book and their lives. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=10 |Title=[[Marielda 10: Four Conversations|Four Conversations]] |AltDate=September 22, 2016 |Aux2=01:48:48 |ShortSummary=The Six go through an extended downtime period in the months between The Valentine Affair and their final job. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=11 |Title=[[Marielda 11: The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 1|The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 1]] |AltDate=September 30, 2016 |Aux2=01:35:36 |ShortSummary=The Six plan and begin their heist to kill Samothes, and face off against the Lance Nobles on their way into Samothes' volcano on [[High Sun Day]]. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=12 |Title=[[Marielda 12: The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 2|The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 2]] |AltDate=October 6, 2016 |Aux2=01:34:58 |ShortSummary=The train arrives at the volcano, where everyone is recieved by the [[Primo|Artificer Mundane]], who gives them new clothes. Afterwards, the group explores the volcano and more guests arrive. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=13 |Title=[[Marielda 13: The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 3|The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 3]] |AltDate=October 13, 2016 |Aux2=01:59:14 |ShortSummary=While exploring, Aubrey clashes with Samot's retinue of mages, and the rest of the group attempt to reconvene in time for dinner. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=14 |Title=[[Marielda 14: The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 4|The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 4]] |AltDate=October 20, 2016 |Aux2=02:01:30 |ShortSummary=The Six and the Mages follow Maelgwyn down to Samothes' forge. Sige tries and fails to stop Maelgwyn from killing Samothes with the [[Blade in the Dark]]. |LineColor=FFB27B }} }} ==Notes== {{reflist|group=note}} {{Marielda episodes}} {{NavboxMarielda}} [[Category:Marielda]] [[Category:Lists of episodes]] a3968f1f540cadac8d3a5f917f1c051193b172e1 87 86 2024-01-03T21:37:52Z Laggardson 2 wikitext text/x-wiki Episodes of Season 1: ''[[Fate]]'', which ran from March, 2019 to October, 2019. {{Episode table | background=#FFB27B | season=1 | title=15 | airdate=10 | aux2=9 | aux2T=Runtime |episodes= {{Episode list |EpisodeNumber2=01 |Title=[[Fate 01: The Dirge Pt. 1|The Dirge Pt. 1]] |AltDate= |Aux2= |ShortSummary= |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=02 |Title=[[Fate 02: The Dirge Pt. 2|The Dirge Pt. 2]] |AltDate= |Aux2= |ShortSummary= |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=03 |Title= |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=04 |Title= |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=05 |Title= |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=06 |Title= |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=07 |Title= |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=08 |Title= |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=09 |Title= |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=10 |Title= |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=11 |Title= |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=12 |Title= |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=13 |Title= |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=14 |Title= |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=15 |Title=[[Fate 15:Vacation pt.4|Vacation pt.4]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} }} ==Notes== {{reflist|group=note}} {{Marielda episodes}} {{NavboxMarielda}} [[Category:Marielda]] [[Category:Lists of episodes]] 892c55058ddf58d59c1117fb73a9e1d961ed779d 88 87 2024-01-03T21:47:07Z Laggardson 2 wikitext text/x-wiki Episodes of Season 1: ''[[Fate]]'', which ran from March, 2019 to October, 2019. {{Episode table | background=#FFB27B | season=1 | title=15 | airdate=10 | aux2=9 | aux2T=Runtime |episodes= {{Episode list |EpisodeNumber2=01 |Title=[[Fate 01: The Dirge Pt. 1|The Dirge Pt. 1]] |AltDate= |Aux2= |ShortSummary=Three strangers arrive at a run-down hotel in the middle of a rainstorm, seeking shelter and a warm place to spend the night. |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=02 |Title=[[Fate 02: The Dirge Pt. 2|The Dirge Pt. 2]] |AltDate= |Aux2= |ShortSummary=Trapped inside with a new friend in tow [[Keeley Stewart|Keeley]], [[Maggie Thornback|Maggie]], and [[Henrietta Salm|Henrietta]] attempt to get to the bottom of the mysterious events at [[The Dirge]]. |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=03 |Title=[[Fate 03: Geringer Pt. 1|Geringer Pt. 1]] |AltDate= |Aux2= |ShortSummary=[[Keeley Stewart|Keeley]], [[Maggie Thornback|Maggie]], and [[Henrietta Salm|Henrietta]] make an unanticipated stop in the town of [[Geringer]], and quickly discover that something strange is stalking the cornfields... |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=04 |Title=[[Fate 04: Geringer Pt. 2|Geringer Pt. 2]] |AltDate= |Aux2= |ShortSummary=After [[Maggie Thornback|Maggie]]'s terrifying encounter with the threats hiding in this town, the Hunters work to try and get to the bottom of what exactly is going on in [[Geringer]]. But they'd better work quickly - some of them are starting to forget there were any threats at all... |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=05 |Title=[[Fate 05: Geringer Pt. 3|Geringer Pt. 3]] |AltDate= |Aux2= |ShortSummary=With tensions escalating, [[Keeley Stewart|Keeley]], [[Maggie Thornback|Maggie]], and [[Henrietta Salm|Henrietta]] are going to need to act quickly. But, as memories fade and the monsters move in, who's going to come looking for strangers? |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=06 |Title=[[Fate 06: Silky & The Solutions Pt. 1|Silky & The Solutions Pt. 1]] |AltDate= |Aux2= |ShortSummary=An unexpected sighting leads Pest Control to the comeback show of a famous musical group. But as the lights dim and the crowd goes quiet, will they be forced to face the music? [[Keeley Stewart|Keely]] joins a protest. Henrietta buys a beer. Maggie creates a disturbance. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=07 |Title=[[Fate 07: Silky & The Solutions Pt. 2|Silky & The Solutions Pt. 2]] |AltDate= |Aux2= |ShortSummary=The Hunters are in a race against the clock as the concert rages on around them, and the monster finally makes itself known. Now, balancing on the edge of disaster, they must make a potentially deadly choice. Maggie reconnects with family. Henrietta leads a chant. Keely makes a decision. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=08 |Title=[[Fate 08: Silky & The Solutions Pt. 3|Silky & The Solutions Pt. 3]] |AltDate= |Aux2= |ShortSummary=With time running out, and their own lives in danger, it's time for the Hunters to make their final moves against their parasitic foe. Will this hunt be their swan song? |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=09 |Title=[[Fate 09: MRS Montessori Pt. 1|MRS Montessori Pt. 1]] |AltDate= |Aux2= |ShortSummary=Still reeling from the events in Denver, Pest Control and newly minted Hunter Jamie Jesigo make their way to a M.R.S. facility in the Nevada desert. Keely makes it big. Henrietta gets a little stuck. Maggie makes a friend. Jamie finds a clue. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=10 |Title=[[Fate 10: MRS Montessori Pt. 2|MRS Montessori Pt. 2]] |AltDate= |Aux2= |ShortSummary=Pest Control hurtles towards a confrontation with dark forces at the M.R.S. school, but the weight of the secrets hiding in the shadows threatens to crush them. Keely reads an unexpected letter. Henrietta buys some property. Maggie and Jamie learn they’re not alone in the dark. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=11 |Title=[[Fate 11: MRS Montessori Pt. 3|MRS Montessori Pt. 3]] |AltDate= |Aux2= |ShortSummary=Separated and desperate, the Hunters pushes themselves to their limits to rid the M.R.S. Montessori school of the evil within. But there are more lives at stake than their own, and one wrong move can lead to devastating consequences. Keely pushes past her limits. Henrietta learns an uncomfortable truth. Jamie makes a life-altering choice. Maggie gets a blast from the past. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=12 |Title=[[Fate 12:Vacation pt.1|Vacation pt.1]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=13 |Title=[[Fate 13:Vacation pt.2|Vacation pt.2]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=14 |Title=[[Fate 14:Vacation pt.3|Vacation pt.3]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=15 |Title=[[Fate 15:Vacation pt.4|Vacation pt.4]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} }} ==Notes== {{reflist|group=note}} {{Marielda episodes}} {{NavboxMarielda}} [[Category:Marielda]] [[Category:Lists of episodes]] c7fa348b98e8bb6d39920b0a81e129a27c63c684 Monster of the Week 0 49 89 2024-01-03T21:55:00Z Laggardson 2 Created page with "'''Monster of the Week''' is a tabletop game that uses the “Powered By The Apocalypse” system. It was created by Michael Sands, and published by Evil Hat Productions." wikitext text/x-wiki '''Monster of the Week''' is a tabletop game that uses the “Powered By The Apocalypse” system. It was created by Michael Sands, and published by Evil Hat Productions. 833f9faa46de9fa26d289abd927021e9b4de2fe8 William White 0 12 90 42 2024-01-03T21:59:46Z Laggardson 2 wikitext text/x-wiki '''William White''' is a cast member on ''Pest Control''. They also mix the audio for the show, and create original music alongside [[Jonas Newhouse]]. They are also in the band “glass beach”. == Characters == === Main Seasons === {| class="wikitable" |- ! style="background-color:#FDCE5E" |Season ! style="background-color:#FDCE5E" |Role(s) |- |[[Fate]] |[[Keeley Stewart]] |- | rowspan="5" |''[[Norfork]]'' |[[Kelly Aberdeen]] |- | [[Nort Port]] <ref name= “:1”> [[S2 E10|Kingdom #1]] </ref>, [[Liz Borger]] <ref name= “:1”> [[S2 E10|Kingdom #1]] </ref>,[[Jillian Murphy]] <ref name= “:2”> [[S2 E19|Kingdom #2]] </ref>, [[Leilah Amund]] <ref name= “:2”> [[S2 E19|Kingdom #2]] </ref> |} ==Trivia== {{Cast}} [[Category:Cast]] 3be8882199080506588a6bca712dff6563f6fb29 Keeley Stewart 0 50 91 2024-01-03T22:02:23Z Laggardson 2 Created page with "{{Infobox Character |color_theme = |title = Keeley Stewart |playbook = The Expert |player = [[William White]] |aliases = |season = ''[[Fate]]'' |pronouns = she/her |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Fate 01: The Dirge Pt. 1]] }}" wikitext text/x-wiki {{Infobox Character |color_theme = |title = Keeley Stewart |playbook = The Expert |player = [[William White]] |aliases = |season = ''[[Fate]]'' |pronouns = she/her |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Fate 01: The Dirge Pt. 1]] }} 22afb5a17fb237abf4d80a24bb8ffa53a969cfa4 92 91 2024-01-03T22:06:18Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Keeley Stewart |playbook = The Expert |player = [[William White]] |aliases = |season = ''[[Fate]]'' |pronouns = she/her |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Fate 01: The Dirge Pt. 1|The Dirge Pt. 1]] }} ee4af94c66d601c188cf31d829dccea9805c1722 97 92 2024-01-03T22:26:38Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Keeley Stewart |playbook = The Expert |player = [[William White]] |aliases = |season = ''[[Fate]]'' |pronouns = she/her |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Fate 01: The Dirge Pt. 1|The Dirge Pt. 1]] }} {{Category:Fate characters}} 9d27b4aab4c9791790fd5c8e8670f8fe1246d4d9 Martin Graves 0 51 93 2024-01-03T22:16:21Z Laggardson 2 Created page with "{{Infobox Character |color_theme = |title = Martin Graves |people = Human |affiliations = |relations = |status = dead |season = ''[[Fate]]'' |pronouns = he/him |image1 = |caption1 = |titles = The Chosen One }} {{Quote|Oh shit.|author=Martin Graves|source=[[Fate 01: The Dirge Pt. 1|The Dirge Pt. 1]]}} '''Martin Graves''' is a human Chosen One who travelled with Pest Control. ==Appearance== ==Personality== ==History and Involvement== ==References== <references..." wikitext text/x-wiki {{Infobox Character |color_theme = |title = Martin Graves |people = Human |affiliations = |relations = |status = dead |season = ''[[Fate]]'' |pronouns = he/him |image1 = |caption1 = |titles = The Chosen One }} {{Quote|Oh shit.|author=Martin Graves|source=[[Fate 01: The Dirge Pt. 1|The Dirge Pt. 1]]}} '''Martin Graves''' is a human Chosen One who travelled with Pest Control. ==Appearance== ==Personality== ==History and Involvement== ==References== <references /> {{NavboxFate}} [[Category:Fate characters]] 7798cdbc2e1d6550c556a6c9fa49b2a8d943bb82 94 93 2024-01-03T22:16:49Z Laggardson 2 /* Background */ wikitext text/x-wiki {{Infobox Character |color_theme = |title = Martin Graves |people = Human |affiliations = |relations = |status = dead |season = ''[[Fate]]'' |pronouns = he/him |image1 = |caption1 = |titles = The Chosen One }} {{Quote|Oh shit.|author=Martin Graves|source=[[Fate 01: The Dirge Pt. 1|The Dirge Pt. 1]]}} '''Martin Graves''' is a human Chosen One who travelled with Pest Control. ==Appearance== ==Personality== ==Background== ==References== <references /> {{NavboxFate}} [[Category:Fate characters]] f8274ce83228c90d5e9a6a41dfd909e05cd30f94 96 94 2024-01-03T22:25:40Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Martin Graves |people = Human |affiliations = |relations = |status = dead |season = ''[[Fate]]'' |pronouns = he/him |image1 = |caption1 = |titles = The Chosen One }} {{Quote |Oh shit. |author=Martin Graves |source=[[Fate 01: The Dirge Pt. 1|The Dirge Pt. 1]]}} '''Martin Graves''' is a human Chosen One who travelled with Pest Control. ==Appearance== ==Personality== ==Background== ==References== <references /> {{NavboxFate}} [[Category:Fate characters]] 247f20ed91ef10c6a743445d651e00fa7c7e8fba Template:Quote 10 52 95 2024-01-03T22:24:13Z Laggardson 2 Created page with "<onlyinclude><div style="margin: 0 1.5em; overflow:auto"><div style="display:flex"> <div><p><span style="font-family: Arbutus Slab, serif; font-size: 1.25em; font-weight:bold; margin-right:3px;">“</span></p></div><div><poem>{{#if: {{{1|}}} | {{{1}}} | {{#if: {{{quote|}}} | {{{quote}}} | Quote here}} }}<span style="font-family: Arbutus Slab, serif; font-weight:bold; font-size: 1.25em; line-height:1em; margin-left:2px">”</span></poem></div> </div>{{#if: {{{2|}}}{{{3|}}..." wikitext text/x-wiki <onlyinclude><div style="margin: 0 1.5em; overflow:auto"><div style="display:flex"> <div><p><span style="font-family: Arbutus Slab, serif; font-size: 1.25em; font-weight:bold; margin-right:3px;">“</span></p></div><div><poem>{{#if: {{{1|}}} | {{{1}}} | {{#if: {{{quote|}}} | {{{quote}}} | Quote here}} }}<span style="font-family: Arbutus Slab, serif; font-weight:bold; font-size: 1.25em; line-height:1em; margin-left:2px">”</span></poem></div> </div>{{#if: {{{2|}}}{{{3|}}}{{{author|}}}{{{source|}}} | <div style="text-align:right; font-size:smaller"><cite style="font-style:normal">&ndash; {{#if: {{{2|}}}{{{author|}}} | {{#if:{{{2|}}}|{{{2}}}|{{{author}}}}}}}{{#if:{{{3|}}}{{{source|}}}|{{#if:{{{2|}}}{{{author|}}}|,&nbsp;}}{{#if:{{{3|}}}| {{{3}}}| {{{source}}} }} }}</cite></div>}}</div></onlyinclude> <noinclude> {{Documentation}} [[Category:Templates]] </noinclude> a479b5dd87c165358a47ed2ea924c337d80fe5d3 Fate 0 8 98 25 2024-01-03T22:29:48Z Laggardson 2 wikitext text/x-wiki {{Infobox season |color_theme=FF0000 |title=Season 1: Fate |image=[[]] |caption=Cover art by [https://twitter.com/shoddyrobot Craig Sheldon] |episodes=15 |release=March 24, 2019 - December 3, 2019 }} '''''Fate''''' (originally known as '''''Queuetimes: Monster of the Week''''') is the first season of ''Pest Control''. It is a game of ''[[Monster of the Week]]''. The first episode was released on [[AltHaven]] on March 24, 2019. It follows a group of found-family monster Hunters as they set off on a journey across the United States, dealing with the creatures they encounter and drawing ever nearer to the end of the road... == Episodes == ↳ [[List of Fate episodes]] == Characters == === Player Characters === *[[Keeley Stewart]] ([[William White]]): The Expert. *[[Henrietta Salm]] ([[Jonas Newhouse]]): The Monstrous. *[[Maggie]] ([[Sam Darr]]): The Spellslinger. === Major NPCs === ''See also'': [[:Category:Fate characters|Fate characters]] *[[Martin Graves|'''Martin Graves''']]: Chosen One who travels with Pest Control *[[Henry Sweezle|'''Henry Sweezle''']]: Antagonist and member of [[VaccuCon]]. *[[Jordan "Jojo" Jesigo|'''Jordan "Jojo" Jesigo''']]: *'''[[Xilin]]''': [[Myriad]] and member of [[Myriad Relocation Services|M.R.S.]] == Notes== <references group="note" /> {{Fate episodes}} <p></p> {{Seasons}} {{Navbox}} [[Category:Fate]] [[Category:Monster of the Week]] [[Category:Seasons]] 4ec25d374b188d36bc47130e2975680ccb388036 Henrietta Salm 0 53 99 2024-01-03T22:32:16Z Laggardson 2 Created page with "{{Infobox Character |color_theme = |title = Henrietta Salm |playbook = The Monstrous |place_of_origin = The Sea |player = [[Jonas Newhouse]] |image1 = [[File:Kelly_Aberdeen.png]] |aliases = |season = ''[[Fate]]'' |pronouns = she/her |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Fate 01: The Dirge Pt. 1|The Dirge Pt. 1]] }}" wikitext text/x-wiki {{Infobox Character |color_theme = |title = Henrietta Salm |playbook = The Monstrous |place_of_origin = The Sea |player = [[Jonas Newhouse]] |image1 = [[File:Kelly_Aberdeen.png]] |aliases = |season = ''[[Fate]]'' |pronouns = she/her |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Fate 01: The Dirge Pt. 1|The Dirge Pt. 1]] }} ccb596a650204962c321303848766ba1696effcc Rabbit Moon 0 54 100 2024-01-03T22:44:01Z Laggardson 2 Created page with "{{Infobox Character |color_theme = |title = Rabbit Moon |playbook = The Shapechanger (custom) |place_of_origin = [[Norfork (City)|Norfork]] |player = [[Jonas Newhouse]] |image1 = [[File:Rabbit_Moon.png]] |aliases = Sage Brennan-Schipp, Barley Porter, The Jackalope, The Gardener |season = ''[[Norfork]]'' |pronouns = he/they |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }}" wikitext text/x-wiki {{Infobox Character |color_theme = |title = Rabbit Moon |playbook = The Shapechanger (custom) |place_of_origin = [[Norfork (City)|Norfork]] |player = [[Jonas Newhouse]] |image1 = [[File:Rabbit_Moon.png]] |aliases = Sage Brennan-Schipp, Barley Porter, The Jackalope, The Gardener |season = ''[[Norfork]]'' |pronouns = he/they |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} 0ec10de39e4e8bbd0ede60ba26881a52fb83c58b Kelly Aberdeen 0 17 101 65 2024-01-03T22:46:07Z Laggardson 2 /* References */ wikitext text/x-wiki {{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = [[Norfork (City)|Norfork]] |player = [[William White]] |image1 = [[File:Kelly_Aberdeen.png]] |aliases = The Cryptid |season = ''[[Norfork]]'' |pronouns = he/him |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} == Appearance == == Personality == == Background == == Abilities == '''Burglar'''. When you break into a secure location, roll +Sharp. On a 10+ pick three, on a 7-9 pick two: you get in undetected, you get out undetected, you don’t leave a mess, you find what you were after. '''Deal with the Devil''': You sold your soul to the Devil. Pick one or two things you got out of the deal: wealth, fame, youth, sensual gratification, skill (add +1 to two ratings). Payment is due either when you die, in six months (if you picked two things) or otherwise in a year. '''Guardian''': You have a mystical ally (perhaps a spirit, alien, or cryptid) who helps and defends you. Define them, and their powers, with the Keeper’s agreement. Their look is one of: invisible, an intangible spirit thing, a weird creature, disguised as an animal, or disguised as a person. === Advancements === '''+1 Sharp''' (episode) '''Precise Strike'''. When you inflict harm on a monster, you can aim for a weak spot. Roll +Tough. On a 10+ you inflict +2 harm. On a 7-9 you inflict +1 harm.On a miss, you leave yourself open to the monster. (episode) '''Devastating'''. When you inflict harm, you may inflict +1 harm. (Ep17) '''Crew'''. You have a regular crew, a team of three or four people who will help you out with pretty much anything. They count as a team. (Ep20) ==Gallery== [[File:Kelly_Aberdeen.png|200px|thumb|left|Caption]] == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] d64fe3f6ef653be08371b9e570995ad886bff7aa Rabbit Moon 0 54 102 100 2024-01-03T22:48:33Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Rabbit Moon |playbook = The Shapechanger (custom) |place_of_origin = [[Norfork (City)|Norfork]] |player = [[Jonas Newhouse]] |image1 = [[File:Rabbit_Moon.png]] |aliases = Sage Brennan-Schipp, Barley Porter, The Jackalope, The Gardener |season = ''[[Norfork]]'' |pronouns = he/they |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} ===Appearance=== ===Personality=== ===Background=== ===Abilities=== ===Gallery=== ===Notes=== ===References=== f14e83f203d0862566d9769fc19801e06a3158e0 103 102 2024-01-03T22:48:52Z Laggardson 2 /* Appearance */ wikitext text/x-wiki {{Infobox Character |color_theme = |title = Rabbit Moon |playbook = The Shapechanger (custom) |place_of_origin = [[Norfork (City)|Norfork]] |player = [[Jonas Newhouse]] |image1 = [[File:Rabbit_Moon.png]] |aliases = Sage Brennan-Schipp, Barley Porter, The Jackalope, The Gardener |season = ''[[Norfork]]'' |pronouns = he/they |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} ==Appearance== ===Personality=== ===Background=== ===Abilities=== ===Gallery=== ===Notes=== ===References=== 6b29b887237f30c7914527836fdd72c91a76b7cb 104 103 2024-01-03T22:49:04Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Rabbit Moon |playbook = The Shapechanger (custom) |place_of_origin = [[Norfork (City)|Norfork]] |player = [[Jonas Newhouse]] |image1 = [[File:Rabbit_Moon.png]] |aliases = Sage Brennan-Schipp, Barley Porter, The Jackalope, The Gardener |season = ''[[Norfork]]'' |pronouns = he/they |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} ==Appearance== ==Personality== ===Background=== ===Abilities=== ===Gallery=== ===Notes=== ===References=== 7ba9c62587e90ace38d4cf13f8352c77214c1564 105 104 2024-01-03T22:49:16Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Rabbit Moon |playbook = The Shapechanger (custom) |place_of_origin = [[Norfork (City)|Norfork]] |player = [[Jonas Newhouse]] |image1 = [[File:Rabbit_Moon.png]] |aliases = Sage Brennan-Schipp, Barley Porter, The Jackalope, The Gardener |season = ''[[Norfork]]'' |pronouns = he/they |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} ==Appearance== ==Personality== ==Background== ===Abilities=== ===Gallery=== ===Notes=== ===References=== 7a76ff736bc81dedaf9d9f8d64d0763b7fa03c66 106 105 2024-01-03T22:49:28Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Rabbit Moon |playbook = The Shapechanger (custom) |place_of_origin = [[Norfork (City)|Norfork]] |player = [[Jonas Newhouse]] |image1 = [[File:Rabbit_Moon.png]] |aliases = Sage Brennan-Schipp, Barley Porter, The Jackalope, The Gardener |season = ''[[Norfork]]'' |pronouns = he/they |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} ==Appearance== ==Personality== ==Background== ==Abilities== ===Gallery=== ===Notes=== ===References=== 501dd8cf865e3bd30d656ac4353dd3f8751f8369 107 106 2024-01-03T22:49:41Z Laggardson 2 /* Gallery */ wikitext text/x-wiki {{Infobox Character |color_theme = |title = Rabbit Moon |playbook = The Shapechanger (custom) |place_of_origin = [[Norfork (City)|Norfork]] |player = [[Jonas Newhouse]] |image1 = [[File:Rabbit_Moon.png]] |aliases = Sage Brennan-Schipp, Barley Porter, The Jackalope, The Gardener |season = ''[[Norfork]]'' |pronouns = he/they |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} ==Appearance== ==Personality== ==Background== ==Abilities== ==Gallery== ===Notes=== ===References=== 0d8bd14c25905396a055ec969b37bd99d52db38b 108 107 2024-01-03T22:49:53Z Laggardson 2 /* Notes */ wikitext text/x-wiki {{Infobox Character |color_theme = |title = Rabbit Moon |playbook = The Shapechanger (custom) |place_of_origin = [[Norfork (City)|Norfork]] |player = [[Jonas Newhouse]] |image1 = [[File:Rabbit_Moon.png]] |aliases = Sage Brennan-Schipp, Barley Porter, The Jackalope, The Gardener |season = ''[[Norfork]]'' |pronouns = he/they |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} ==Appearance== ==Personality== ==Background== ==Abilities== ==Gallery== ==Notes== ===References=== a03d528a4ef62a77c6d93b84cd015f5713cb420e 109 108 2024-01-03T22:50:04Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Rabbit Moon |playbook = The Shapechanger (custom) |place_of_origin = [[Norfork (City)|Norfork]] |player = [[Jonas Newhouse]] |image1 = [[File:Rabbit_Moon.png]] |aliases = Sage Brennan-Schipp, Barley Porter, The Jackalope, The Gardener |season = ''[[Norfork]]'' |pronouns = he/they |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} ==Appearance== ==Personality== ==Background== ==Abilities== ==Gallery== ==Notes== ==References== 12fe2d6256b2da3562b61616505a3e986fa0d528 110 109 2024-01-03T22:51:56Z Laggardson 2 /* Gallery */ wikitext text/x-wiki {{Infobox Character |color_theme = |title = Rabbit Moon |playbook = The Shapechanger (custom) |place_of_origin = [[Norfork (City)|Norfork]] |player = [[Jonas Newhouse]] |image1 = [[File:Rabbit_Moon.png]] |aliases = Sage Brennan-Schipp, Barley Porter, The Jackalope, The Gardener |season = ''[[Norfork]]'' |pronouns = he/they |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} ==Appearance== ==Personality== ==Background== ==Abilities== ==Gallery== [[File:Rabbit_Moon.png|200px|thumb|left|Caption]] ==Notes== ==References== eed8e4971357c4a9d388111be75f0905cbcd2a77 111 110 2024-01-03T22:59:24Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Rabbit Moon |playbook = The Shapechanger (custom) |place_of_origin = [[Norfork (City)|Norfork]] |player = [[Jonas Newhouse]] |image1 = [[File:Rabbit_Moon.png]] |aliases = Sage Brennan-Schipp, Barley Porter, The Jackalope, The Gardener |season = ''[[Norfork]]'' |pronouns = he/they |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} ==Appearance== ==Personality== ==Background== ==Abilities== '''That was Me!''' Define a Homeground (neighborhood, town, city, other) and a Timeline (1 year, 2 years, 5 years, 10 years, eternity, other) with the Keeper. As long as you are talking to someone living in your Homeground during your Timeline, you may reveal to them that you used to know them - just not in this form. When you do, roll +Sharp. On a 10+ they remember you. They’ll do you one favor as long as it doesn’t put them in harms way, no ques- tions asked. On a 7-9 you left on strange terms. The Keeper picks one of the following. On a miss they don’t remember you, or you are mistaken - they’ll think something is off about you, and maybe even that you’re dangerous. • They want an apology from you for something you did. • You have something of theirs, and they want it back before they’ll help you. • They want a favor in return. • They’ll only do the easiest part of what you asked, leaving the rest up to you. '''They’re All Me.''' Define three starting Appearances with the Keeper. You can become all three at any time, but the transformation is slow and unseemly. If you try to transform rapidly roll +Cool. On a 10+, you do it no problem. On a 7-9, pick two from the list below - the others are false. On a miss, something goes wrong. • Your Appearance looks perfect. • Your voice is exactly right. • You keep all of your fluids in. • You don’t take any harm. '''Unstable Form.''' When you try to become a form other than your Appearances, roll +Cool. On a 10+, you can maintain the form for up to 48 hours, but pick one option from the 7-9 list for “They’re All Me” - the rest are false. After 48 hours, you’ll need to revert to one of your Appearances and rest, no matter what. On a 7-9, you have minutes or seconds in this form - make them count. On a miss, you’re not who you intended to be. The Keeper will tell you who you are, and for how long (up to 48 hours). '''Defined By Connection.''' When you make a genuine emotional connection with a Hunter or NPC you haven’t used “That Was Me!” on, mark Experience. ==Gallery== [[File:Rabbit_Moon.png|200px|thumb|left|Caption]] ==Notes== ==References== ee2c211b7e7db4dd1cc9e7e08377fa2eab7fe48f Nammi 0 55 112 2024-01-04T03:26:20Z Laggardson 2 Created page with "{{Infobox Character |color_theme = |title = Nammi |playbook = The Divine |place_of_origin = [[The Garden]] |player = [[Sam Darr]] |image1 = [[]] |aliases = |season = ''[[Norfork]]'' |pronouns = she/her |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }}" wikitext text/x-wiki {{Infobox Character |color_theme = |title = Nammi |playbook = The Divine |place_of_origin = [[The Garden]] |player = [[Sam Darr]] |image1 = [[]] |aliases = |season = ''[[Norfork]]'' |pronouns = she/her |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} 4ec258c38a48eeffe8c0bc68c8a2c7371a3cfafb 118 112 2024-01-04T03:52:45Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Nammi |playbook = The Divine |place_of_origin = [[The Garden]] |player = [[Sam Darr]] |image1 = [[]] |aliases = |season = ''[[Norfork]]'' |pronouns = she/her |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} ==Appearance== ==Personality== ==Background== ==Abilities== ==Gallery== ==Notes== ==Reference== {{Category:Norfork characters}} {{Category:PCs}} c8e9dfc0dac6460977ed001a3dadc87ec5134a2a Fate 0 8 113 98 2024-01-04T03:27:11Z Laggardson 2 /* Player Characters */ wikitext text/x-wiki {{Infobox season |color_theme=FF0000 |title=Season 1: Fate |image=[[]] |caption=Cover art by [https://twitter.com/shoddyrobot Craig Sheldon] |episodes=15 |release=March 24, 2019 - December 3, 2019 }} '''''Fate''''' (originally known as '''''Queuetimes: Monster of the Week''''') is the first season of ''Pest Control''. It is a game of ''[[Monster of the Week]]''. The first episode was released on [[AltHaven]] on March 24, 2019. It follows a group of found-family monster Hunters as they set off on a journey across the United States, dealing with the creatures they encounter and drawing ever nearer to the end of the road... == Episodes == ↳ [[List of Fate episodes]] == Characters == === Player Characters === *[[Keeley Stewart]] ([[William White]]): The Expert. *[[Henrietta Salm]] ([[Jonas Newhouse]]): The Monstrous. *[[Maggie Thornback]] ([[Sam Darr]]): The Spellslinger. === Major NPCs === ''See also'': [[:Category:Fate characters|Fate characters]] *[[Martin Graves|'''Martin Graves''']]: Chosen One who travels with Pest Control *[[Henry Sweezle|'''Henry Sweezle''']]: Antagonist and member of [[VaccuCon]]. *[[Jordan "Jojo" Jesigo|'''Jordan "Jojo" Jesigo''']]: *'''[[Xilin]]''': [[Myriad]] and member of [[Myriad Relocation Services|M.R.S.]] == Notes== <references group="note" /> {{Fate episodes}} <p></p> {{Seasons}} {{Navbox}} [[Category:Fate]] [[Category:Monster of the Week]] [[Category:Seasons]] 971de3b70d2009f088e518dd84050c6dffc6125e 135 113 2024-01-04T18:48:28Z Laggardson 2 wikitext text/x-wiki {{Infobox season |color_theme=FF0000 |title=Season 1: Fate |image=[[]] |caption=Cover art by [https://twitter.com/shoddyrobot Craig Sheldon] |episodes=15 |release=March 24, 2019 - December 3, 2019 }} '''''Fate''''' (originally known as '''''Queuetimes: Monster of the Week''''') is the first season of ''Pest Control''. It is a game of ''[[Monster of the Week]]''. The first episode was released on [[AltHaven]] on March 24, 2019. It follows a group of found-family monster Hunters as they set off on a journey across the United States, dealing with the creatures they encounter and drawing ever nearer to the end of the road... The season consists of five arcs which are each set in a different location: The Dirge, Geringer, Silky & The Solutions (Denver, CO), M.R.S. Montessori (Nevada), and Vacation (California). == Episodes == ↳ [[List of Fate episodes]] == Characters == === Player Characters === *[[Keeley Stewart]] ([[William White]]): The Expert. *[[Henrietta Salm]] ([[Jonas Newhouse]]): The Monstrous. *[[Maggie Thornback]] ([[Sam Darr]]): The Spellslinger. === Major NPCs === ''See also'': [[:Category:Fate characters|Fate characters]] *[[Martin Graves|'''Martin Graves''']]: Chosen One who travels with Pest Control *[[Henry Sweezle|'''Henry Sweezle''']]: Antagonist and member of [[VaccuCon]]. *[[Jordan "Jojo" Jesigo|'''Jordan "Jojo" Jesigo''']]: *'''[[Xilin]]''': [[Myriad]] and member of [[Myriad Relocation Services|M.R.S.]] ==Gallery== == Notes== <references group="note" /> {{Fate episodes}} <p></p> {{Seasons}} {{Navbox}} [[Category:Fate]] [[Category:Monster of the Week]] [[Category:Seasons]] 4db9ec685c712b0be856dcd8e0ab0d64d4bcb2ff Norfork 0 23 114 50 2024-01-04T03:28:11Z Laggardson 2 wikitext text/x-wiki ''(For the town itself, see ''[[Norfork (location)|Norfork]]'')'' {{Infobox season |color_theme=FF0000 |title=Season 2: Norfork |image=[[]] |caption=Cover art by [https://twitter.com/shoddyrobot Craig Sheldon] |episodes=27 |release=October 30, 2022 - present }} '''''Norfork''''' is the second season of ''Pest Control''. It primarily uses the ''[[Monster of the Week]]'' system, while also making forays into other games. The first episode was released on October 30th, 2022. It follows a trio of friends living in the edge-city of Norfork as it adapts to the open presence of [[Myriad|Myriads]] and the encroachment of [[The City]]. == Episodes == ↳ [[List of Norfork episodes]] dfed84c4192d8ee2d8bf69fd06c9519b49cdddf3 115 114 2024-01-04T03:30:05Z Laggardson 2 wikitext text/x-wiki ''(For the town itself, see ''[[Norfork (location)|Norfork]]'')'' {{Infobox season |color_theme=FF0000 |title=Season 2: Norfork |image=[[]] |caption=Cover art by [https://twitter.com/shoddyrobot Craig Sheldon] |episodes=27 |release=October 30, 2022 - present }} '''''Norfork''''' is the second season of ''Pest Control''. It primarily uses the ''[[Monster of the Week]]'' system, while also making forays into other games. The first episode was released on October 30th, 2022. It follows a trio of friends living in the edge-city of Norfork as it adapts to the open presence of [[Myriad|Myriads]] and the encroachment of [[The City]]. == Episodes == ↳ [[List of Norfork episodes]] == Characters == === Player Characters === *[[Keeley Stewart]] ([[William White]]): The Expert. *[[Henrietta Salm]] ([[Jonas Newhouse]]): The Monstrous. *[[Maggie Thornback]] ([[Sam Darr]]): The Spellslinger. === Major NPCs === ''See also'': [[:Category:Fate characters|Fate characters]] *[[Butch|'''Butch''']]: *[[Cold Moon|'''Cold Moon''']]: *[[Jordan "Jojo" Jesigo|'''Jordan "Jojo" Jesigo''']]: *'''[[ f5e565d03d115d8cf749b4e0cdd40e24459dc760 116 115 2024-01-04T03:38:22Z Laggardson 2 /* Player Characters */ wikitext text/x-wiki ''(For the town itself, see ''[[Norfork (location)|Norfork]]'')'' {{Infobox season |color_theme=FF0000 |title=Season 2: Norfork |image=[[]] |caption=Cover art by [https://twitter.com/shoddyrobot Craig Sheldon] |episodes=27 |release=October 30, 2022 - present }} '''''Norfork''''' is the second season of ''Pest Control''. It primarily uses the ''[[Monster of the Week]]'' system, while also making forays into other games. The first episode was released on October 30th, 2022. It follows a trio of friends living in the edge-city of Norfork as it adapts to the open presence of [[Myriad|Myriads]] and the encroachment of [[The City]]. == Episodes == ↳ [[List of Norfork episodes]] == Characters == === Player Characters === *[[Kelly Aberdeen]] ([[William White]]): The Crooked. *[[Rabbit Moon]] ([[Jonas Newhouse]]): The Shapechanger. *[[Nammi]] ([[Sam Darr]]): The Divine. === Major NPCs === ''See also'': [[:Category:Fate characters|Fate characters]] *[[Butch|'''Butch''']]: *[[Cold Moon|'''Cold Moon''']]: *[[Jordan "Jojo" Jesigo|'''Jordan "Jojo" Jesigo''']]: *'''[[ fc22a1c976553dd990cffd4cb50862420f248a44 117 116 2024-01-04T03:41:25Z Laggardson 2 /* Major NPCs */ wikitext text/x-wiki ''(For the town itself, see ''[[Norfork (location)|Norfork]]'')'' {{Infobox season |color_theme=FF0000 |title=Season 2: Norfork |image=[[]] |caption=Cover art by [https://twitter.com/shoddyrobot Craig Sheldon] |episodes=27 |release=October 30, 2022 - present }} '''''Norfork''''' is the second season of ''Pest Control''. It primarily uses the ''[[Monster of the Week]]'' system, while also making forays into other games. The first episode was released on October 30th, 2022. It follows a trio of friends living in the edge-city of Norfork as it adapts to the open presence of [[Myriad|Myriads]] and the encroachment of [[The City]]. == Episodes == ↳ [[List of Norfork episodes]] == Characters == === Player Characters === *[[Kelly Aberdeen]] ([[William White]]): The Crooked. *[[Rabbit Moon]] ([[Jonas Newhouse]]): The Shapechanger. *[[Nammi]] ([[Sam Darr]]): The Divine. === Major NPCs === ''See also'': [[:Category:Norfork characters|Norfork characters]] *[[Butch|'''Butch''']]: Shadow that protects Kelly. *[[Cold Moon|'''Cold Moon''']]: Leader of the [[Lunar Coven]]. *[[Almos Sumati|'''Almos Sumati''']]: Werewolf lawyer from Norfork. *[[Valentina|'''Valentina''']]: Leader of the [[Agents of Dranja]]. 96663a4c996bdf074bf22c10368bcf242b9ec817 125 117 2024-01-04T04:35:40Z Laggardson 2 /* Major NPCs */ wikitext text/x-wiki ''(For the town itself, see ''[[Norfork (location)|Norfork]]'')'' {{Infobox season |color_theme=FF0000 |title=Season 2: Norfork |image=[[]] |caption=Cover art by [https://twitter.com/shoddyrobot Craig Sheldon] |episodes=27 |release=October 30, 2022 - present }} '''''Norfork''''' is the second season of ''Pest Control''. It primarily uses the ''[[Monster of the Week]]'' system, while also making forays into other games. The first episode was released on October 30th, 2022. It follows a trio of friends living in the edge-city of Norfork as it adapts to the open presence of [[Myriad|Myriads]] and the encroachment of [[The City]]. == Episodes == ↳ [[List of Norfork episodes]] == Characters == === Player Characters === *[[Kelly Aberdeen]] ([[William White]]): The Crooked. *[[Rabbit Moon]] ([[Jonas Newhouse]]): The Shapechanger. *[[Nammi]] ([[Sam Darr]]): The Divine. === Major NPCs === ''See also'': [[:Category:Norfork characters|Norfork characters]] *[[Butch|'''Butch''']]: Shadow that protects Kelly. *[[Rosa Kalyani|'''Cold Moon''']]: Leader of the [[Lunar Coven]]. *[[Almos Sumati|'''Almos Sumati''']]: Werewolf lawyer from Norfork. *[[Valentina|'''Valentina''']]: Leader of the [[Agents of Dranja]]. *[[The Mothman|'''The Mothman''']]: A masked vigilante. d12d9d4da2ef79ef80e3faa1dafc56871175b19e 136 125 2024-01-04T18:54:03Z Laggardson 2 wikitext text/x-wiki ''(For the town itself, see ''[[Norfork (location)|Norfork]]'')'' {{Infobox season |color_theme=FF0000 |title=Season 2: Norfork |image=[[]] |caption=Cover art by [https://twitter.com/shoddyrobot Craig Sheldon] |episodes=27 |release=October 30, 2022 - present }} '''''Norfork''''' is the second season of ''Pest Control''. It primarily uses the ''[[Monster of the Week]]'' system, while also making forays into other games. The first episode was released on October 30th, 2022. It follows a trio of friends living in the edge-city of Norfork as it adapts to the open presence of [[Myriad|Myriads]] and the encroachment of [[The City]]. == Episodes == ↳ [[List of Norfork episodes]] == Characters == === Player Characters === *[[Kelly Aberdeen]] ([[William White]]): The Crooked. *[[Rabbit Moon]] ([[Jonas Newhouse]]): The Shapechanger. *[[Nammi]] ([[Sam Darr]]): The Divine. === Major NPCs === ''See also'': [[:Category:Norfork characters|Norfork characters]] *[[Butch|'''Butch''']]: Shadow that protects Kelly. *[[Rosa Kalyani|'''Cold Moon''']]: Leader of the [[Lunar Coven]]. *[[Almos Sumati|'''Almos Sumati''']]: Werewolf lawyer from Norfork. *[[Valentina|'''Valentina''']]: Leader of the [[Agents of Dranja]]. *[[The Mothman|'''The Mothman''']]: A masked vigilante. *[[Ace Aruna|'''Ace Aruna''']]: A vampire Myriad who needs the trio's help. *[[Ripley Adams|'''Det. Ripley Adams''']]: A cop who has it out for Kelly. *[[Carmichael|'''Carmichael''']]: A vampire that Kelly screwed over, who now means to collect. *[[Glymmer|'''Glymmer''']]: A local influencer and [[Myriad]]. *[[Akito|'''Akito''']]: Nammi's former lover, and member of the [[Agents of Dranja]]. *[[Elio Amadi|'''Elio Amadi''']]: Local stage magician, children's entertainer, and [[Myriad]]. d70f32392ce9a741fd079dc33a1e5bb11f53379b Maggie Thornback 0 56 119 2024-01-04T03:56:19Z Laggardson 2 Created page with "{{Infobox Character |color_theme = |title = Maggie Thornback |playbook = The Spellslinger |place_of_origin = Unknown |player = [[Sam Darr]] |image1 = [[File:Kelly_Aberdeen.png]] |aliases = |season = ''[[Fate]]'' |pronouns = she/her |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Fate 01: The Dirge Pt. 1|The Dirge Pt. 1]] }}" wikitext text/x-wiki {{Infobox Character |color_theme = |title = Maggie Thornback |playbook = The Spellslinger |place_of_origin = Unknown |player = [[Sam Darr]] |image1 = [[File:Kelly_Aberdeen.png]] |aliases = |season = ''[[Fate]]'' |pronouns = she/her |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Fate 01: The Dirge Pt. 1|The Dirge Pt. 1]] }} b2b3d3adf8783cf28f6edd998cf646a7219acd98 120 119 2024-01-04T03:58:07Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Maggie Thornback |playbook = The Spellslinger |place_of_origin = Unknown |player = [[Sam Darr]] |image1 = [[File:Kelly_Aberdeen.png]] |aliases = |season = ''[[Fate]]'' |pronouns = she/her |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Fate 01: The Dirge Pt. 1|The Dirge Pt. 1]] }} ==Appearance== ==Personality== ==Background== ==Abilities== ==Gallery== ==Notes== ==References== 0db0164fcef633b361f10416f9d4a5ebfe3c81b2 Lunar Coven 0 57 121 2024-01-04T04:20:11Z Laggardson 2 Created page with "{{Infobox Group |color_theme=tm |title1 = Advent Group |members = [[Rosa Kalyani]] AKA Cold Moon [[Rabbit Moon]] [[Meg White]] AKA Wolf Moon [[Alek Darrling]] AKA Snow Moon [[Kaj Benedikt]] AKA Worm Moon [[Stela Hartley]] AKA Pink Moon [[Flora Vayu]] AKA Flower Moon [[Susanna Pinon]] AKA Strawberry Moon [[Buck Curt]] AKA Buck Moon [[Abilene Ellington]] AKA Sturgeon Moon [[Nieve Gardener]] AKA Corn Moon [[Tisi Casanuevo]] AKA Hunter Moon [[Helen Madura]] AKA Beaver Moon..." wikitext text/x-wiki {{Infobox Group |color_theme=tm |title1 = Advent Group |members = [[Rosa Kalyani]] AKA Cold Moon [[Rabbit Moon]] [[Meg White]] AKA Wolf Moon [[Alek Darrling]] AKA Snow Moon [[Kaj Benedikt]] AKA Worm Moon [[Stela Hartley]] AKA Pink Moon [[Flora Vayu]] AKA Flower Moon [[Susanna Pinon]] AKA Strawberry Moon [[Buck Curt]] AKA Buck Moon [[Abilene Ellington]] AKA Sturgeon Moon [[Nieve Gardener]] AKA Corn Moon [[Tisi Casanuevo]] AKA Hunter Moon [[Helen Madura]] AKA Beaver Moon }} == References == {{Reflist}} {{NavboxTM}} [[Category:Norfork groups]] be2709651b20c1474a08f88f4ba943ffbb10581c 123 121 2024-01-04T04:22:40Z Laggardson 2 wikitext text/x-wiki {{Infobox Group |color_theme=tm |title1 = Advent Group |members = [[Rosa Kalyani]] AKA Cold Moon [[Rabbit Moon]] [[Meg White]] AKA Wolf Moon [[Alek Darrling]] AKA Snow Moon [[Kaj Benedikt]] AKA Worm Moon [[Stela Hartley]] AKA Pink Moon [[Flora Vayu]] AKA Flower Moon [[Susanna Pinon]] AKA Strawberry Moon [[Buck Curt]] AKA Buck Moon [[Abilene Ellington]] AKA Sturgeon Moon [[Nieve Gardener]] AKA Corn Moon [[Tisi Casanuevo]] AKA Hunter Moon [[Helen Madura]] AKA Beaver Moon }} The Lunar Coven is a group in Norfork == References == {{Reflist}} {{NavboxTM}} [[Category:Norfork groups]] a443866bd96502b5388072eef053fb15669f82d6 124 123 2024-01-04T04:25:52Z Laggardson 2 wikitext text/x-wiki {{Infobox Group |color_theme=tm |title1 = Advent Group |leaders = [[Rosa Kalyani]] AKA Cold Moon |members = [[Rabbit Moon]] <br> [[Meg White]] AKA Wolf Moon <br> [[Alek Darrling]] AKA Snow Moon <br> [[Kaj Benedikt]] AKA Worm Moon <br> [[Stela Hartley]] AKA Pink Moon <br> [[Flora Vayu]] AKA Flower Moon <br> [[Susanna Pinon]] AKA Strawberry Moon<br> [[Buck Curt]] AKA Buck Moon <br> [[Abilene Ellington]] AKA Sturgeon Moon <br> [[Nieve Gardener]] AKA Corn Moon <br> [[Tisi Casanuevo]] AKA Hunter Moon<br> [[Helen Madura]] AKA Beaver Moon <br> }} The Lunar Coven is a group in Norfork == References == {{Reflist}} {{NavboxTM}} [[Category:Norfork groups]] 4672cfee84f2da74e59135782505054a55978fe0 Template:Infobox Group 10 58 122 2024-01-04T04:21:44Z Laggardson 2 Created page with "<infobox theme-source="color_theme"> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"> <caption source="caption"/> </image> <data source="aliases"> <label>Aliases</label> </data> <data source="leaders"> <label>Leaders</label> </data> <data source="members"> <label>Members</label> </data> <data source="area_of_operation"> <label>Area of Operation</label> </data> <data source="affiliatio..." wikitext text/x-wiki <infobox theme-source="color_theme"> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"> <caption source="caption"/> </image> <data source="aliases"> <label>Aliases</label> </data> <data source="leaders"> <label>Leaders</label> </data> <data source="members"> <label>Members</label> </data> <data source="area_of_operation"> <label>Area of Operation</label> </data> <data source="affiliations"> <label>Affiliations</label> </data> <group collapse="open"> <header>Meta</header> <data source="season"> <label>Season</label> </data> <data source="game"> <label>Game</label> </data> <data source="players"> <label>Players</label> </data> <data source="debut"> <label>Debut</label> </data> </group> </infobox><!-- -->{{#ifeq: {{NAMESPACENUMBER}} | 0 | {{#if: {{{color_theme|}}} || [[Category:Infoboxes with missing color theme]] }} | }} <noinclude> {{Documentation}} [[Category:Infoboxes]] </noinclude> 731192b02a68e65e8568cf10a1fd06237e99ad2d VaccuCon 0 59 126 2024-01-04T04:39:50Z Laggardson 2 Created page with "{{Infobox Group |color_theme=tm |title1 = Advent Group |leaders = [[The Speaker]] (formerly) |members = [[Henry Sweezle]] <br> }} VaccuCon is a group that" wikitext text/x-wiki {{Infobox Group |color_theme=tm |title1 = Advent Group |leaders = [[The Speaker]] (formerly) |members = [[Henry Sweezle]] <br> }} VaccuCon is a group that f541810c3daea7341678ca69f5b7eac5e6090494 Agents of Dranja 0 60 127 2024-01-04T06:20:33Z Laggardson 2 Created page with "{{Infobox Group |color_theme=tm |title1 = Agents of Dranja |leaders = [[Valentina]] |members = [[Nammi]] <br> [[Romeo]] <br> [[Isla]] <br> [[Emory]] <br> [[Akito]] <br> [[Jaamini]] <br> }} The Agents of Dranja are a group of beings sent to Earth by the divine being [[Dranja]] to perform various duties ranging from the creation or repair of relationships, to “divine intervention”." wikitext text/x-wiki {{Infobox Group |color_theme=tm |title1 = Agents of Dranja |leaders = [[Valentina]] |members = [[Nammi]] <br> [[Romeo]] <br> [[Isla]] <br> [[Emory]] <br> [[Akito]] <br> [[Jaamini]] <br> }} The Agents of Dranja are a group of beings sent to Earth by the divine being [[Dranja]] to perform various duties ranging from the creation or repair of relationships, to “divine intervention”. 71fa56c0573e781efc0a09270b74b2d6572f3520 List of Norfork episodes 0 61 128 2024-01-04T16:04:38Z Laggardson 2 Created page with "Episodes of Season 1: ''[[Fate]]'', which ran from March, 2019 to October, 2019. {{Episode table | background=#FF0000 | season=2 | title=15 | airdate=10 | aux2=9 | aux2T=Runtime |episodes= {{Episode list |EpisodeNumber2=01 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=02 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=03 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |Line..." wikitext text/x-wiki Episodes of Season 1: ''[[Fate]]'', which ran from March, 2019 to October, 2019. {{Episode table | background=#FF0000 | season=2 | title=15 | airdate=10 | aux2=9 | aux2T=Runtime |episodes= {{Episode list |EpisodeNumber2=01 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=02 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=03 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=04 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=05 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=06 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=07 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=08 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=09 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=10 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=11 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=12 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=13 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=14 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=15 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=16 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=17 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=18 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=19 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=20 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=21 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=22 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=23 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=24 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=25 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=26 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=27 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=28 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} }} 5d7b064357aee0831becc9deff5718af758c1cab 129 128 2024-01-04T16:15:17Z Laggardson 2 wikitext text/x-wiki Episodes of Season 2: ''[[Norfork]]'', which ran from October, 2022 to present. {{Episode table | background=#FF0000 | season=2 | title=15 | airdate=10 | aux2=9 | aux2T=Runtime |episodes= {{Episode list |EpisodeNumber2=00 |Title=[[Norfork 00: The Ground Itself|The Ground Itself]] |AltDate= |Aux2=1hr 54min |ShortSummary=The cast collaboratively builds the world of Norfork using Everest Pipkin’s The Ground Itself. |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=01 |Title=[[Norfork 01: Messages|Messages]] |AltDate= |Aux2=1hr 32min |ShortSummary= Welcome to Norfork - you need to leave. Kelly receives unexpected visitors. Rabbit has a performance review. Nammi gets a call that will change everything. |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=02 |Title=[[Norfork 02: Double-Take|Double-Take]] |AltDate= |Aux2= |ShortSummary= |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=03 |Title=[[Norfork 03: The Right To Remain Silent|The Right To Remain Silent]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=04 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=05 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=06 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=07 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=08 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=09 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=10 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=11 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=12 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=13 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=14 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=15 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=16 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=17 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=18 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=19 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=20 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=21 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=22 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=23 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=24 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=25 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=26 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=27 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=28 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} }} bf93e9bc4ca664fa20b0b9faa58e0ec323c55250 130 129 2024-01-04T16:40:53Z Laggardson 2 wikitext text/x-wiki Episodes of Season 2: ''[[Norfork]]'', which ran from October, 2022 to present. {{Episode table | background=#FF0000 | season=2 | title=15 | airdate=10 | aux2=9 | aux2T=Runtime |episodes= {{Episode list |EpisodeNumber2=00 |Title=[[Norfork 00: The Ground Itself|The Ground Itself]] |AltDate= |Aux2=1hr 54min |ShortSummary=The cast collaboratively builds the world of Norfork using Everest Pipkin’s The Ground Itself. |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=01 |Title=[[Norfork 01: Messages|Messages]] |AltDate= |Aux2=1hr 32min |ShortSummary= Welcome to Norfork - you need to leave. Kelly receives unexpected visitors. Rabbit has a performance review. Nammi gets a call that will change everything. |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=02 |Title=[[Norfork 02: Double-Take|Double-Take]] |AltDate=1hr 11min |Aux2= |ShortSummary= The trio investigate a mysterious call. Kelly makes a plea. Nammi goes live. Rabbit loses focus at a crucial moment. |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=03 |Title=[[Norfork 03: The Right To Remain Silent|The Right To Remain Silent]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=04 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=05 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=06 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=07 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=08 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=09 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=10 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=11 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=12 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=13 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=14 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=15 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=16 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=17 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=18 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=19 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=20 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=21 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=22 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=23 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=24 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=25 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=26 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=27 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=28 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} }} 5ba5d8ac63bfde29330d3ca87c0ac41866fde2d3 131 130 2024-01-04T18:05:40Z Laggardson 2 wikitext text/x-wiki Episodes of Season 2: ''[[Norfork]]'', which ran from October, 2022 to present. {{Episode table | background=#FF0000 | season=2 | title=15 | airdate=10 | aux2=9 | aux2T=Runtime |episodes= {{Episode list |EpisodeNumber2=00 |Title=[[Norfork 00: The Ground Itself|The Ground Itself]] |AltDate= |Aux2=1hr 54min |ShortSummary=The cast collaboratively builds the world of Norfork using Everest Pipkin’s The Ground Itself. |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=01 |Title=[[Norfork 01: Messages|Messages]] |AltDate= |Aux2=1hr 32min |ShortSummary= Welcome to Norfork - you need to leave. Kelly receives unexpected visitors. Rabbit has a performance review. Nammi gets a call that will change everything. |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=02 |Title=[[Norfork 02: Double-Take|Double-Take]] |AltDate= |Aux2=1hr 11min |ShortSummary= The trio investigate a mysterious call. Kelly makes a plea. Nammi goes live. Rabbit loses focus at a crucial moment. |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=03 |Title=[[Norfork 03: The Right To Remain Silent|The Right To Remain Silent]] |AltDate= |Aux2=1hr 5min |ShortSummary= The trio must decide what to do after a new problem falls in their lap and they are forced to separate. Kelly follows a lead. Nammi tells the truth. Rabbit gets a new job. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=04 |Title=[[Norfork 04: Stay In Touch|Stay In Touch]] |AltDate= |Aux2=1hr 3min |ShortSummary= Scattered across Norfork and The City and dealing with an array of new problems, the trio make some tough decisions. Nammi makes a deal. Kelly returns to the scene of the crime. Rabbit deals with a personal tragedy. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=05 |Title=[[Norfork 05: Bedfellows|Bedfellows]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=06 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=07 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=08 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=09 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=10 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=11 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=12 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=13 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=14 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=15 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=16 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=17 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=18 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=19 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=20 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=21 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=22 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=23 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=24 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=25 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=26 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=27 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=28 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} }} 9cc9ba1219a6641718cbf61e35a67247b96bc750 Main Page 0 1 132 56 2024-01-04T18:06:46Z Laggardson 2 wikitext text/x-wiki {{ColoredBox |title=Welcome! |background-title-color=#ff0000 |center-title=true |center-content=true |content= Welcome to Pest Control Wiki - a wiki for the actual-play podcast ''[[Pest Control]]''! <p><strong>Official Links</strong><br> [https://twitter.com/PestControlPod Twitter] • [https://cohost.org/pestcontrolpod Cohost] • [https://discord.gg/uv9bzF6RPY Discord] </p> <p><strong>Contribute to the Wiki</strong><br> <strong>{{NUMBEROFARTICLES}} PAGES</strong> • [[Main_Page|Getting Started]]</p> }} {{ColoredBox |title=Seasons |background-title-color=#ff0000 |center-title=true |content = {{ContentFlex |style=flex-wrap:wrap;justify-content:center;flex-grow:0 |content= {{Home season list item |filename= |imagepage= |text='''''[[Fate]]''''' }} {{Home season list item |filename= norfork_coverart.png |imagepage= |text='''''[[Norfork]]''''' }} |center-content=true }} }} {{ColoredBox |title = The Cast |background-title-color=#ff0000 |center-content=true|center-title=true |content = [[Sam Richardson]] • [[William White]] • [[Jonas Newhouse]] • [[Sam Darr]] }} __NOTOC__ == Welcome to {{SITENAME}}! == This Main Page was created automatically and it seems it hasn't been replaced yet. === For the bureaucrat(s) of this wiki === Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting. You can immediately start working on your wiki or whenever you want. Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links: * [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users) * [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]] * [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.) ==== I still don't understand X! ==== Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here: * [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]] * On [[phab:|Phabricator]] * On [https://miraheze.org/discord Discord] * On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat]) === For visitors of this wiki === Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later! 284e47e4da70c0af7bc55e0b994e6348bf98322c 133 132 2024-01-04T18:07:19Z Laggardson 2 wikitext text/x-wiki {{ColoredBox |title=Welcome! |background-title-color=#ff0000 |center-title=true |center-content=true |content= Welcome to Pest Control Wiki - a wiki for the actual-play podcast ''[[Pest Control]]''! <p><strong>Official Links</strong><br> [https://twitter.com/PestControlPod Twitter] • [https://cohost.org/pestcontrolpod Cohost] • [https://discord.gg/uv9bzF6RPY Discord] </p> <p><strong>Contribute to the Wiki</strong><br> <strong>{{NUMBEROFARTICLES}} PAGES</strong> • [[Main_Page|Getting Started]]</p> }} {{ColoredBox |title=Seasons |background-title-color=#ff0000 |center-title=true |content = {{ContentFlex |style=flex-wrap:wrap;justify-content:center;flex-grow:0 |content= {{Home season list item |filename= |imagepage= |text='''''[[Fate]]''''' }} {{Home season list item |filename= norfork_coverart.png |imagepage= |text='''''[[Norfork]]''''' }} }} |center-content=true }} {{ColoredBox |title = The Cast |background-title-color=#ff0000 |center-content=true|center-title=true |content = [[Sam Richardson]] • [[William White]] • [[Jonas Newhouse]] • [[Sam Darr]] }} __NOTOC__ == Welcome to {{SITENAME}}! == This Main Page was created automatically and it seems it hasn't been replaced yet. === For the bureaucrat(s) of this wiki === Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting. You can immediately start working on your wiki or whenever you want. Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links: * [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users) * [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]] * [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.) ==== I still don't understand X! ==== Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here: * [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]] * On [[phab:|Phabricator]] * On [https://miraheze.org/discord Discord] * On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat]) === For visitors of this wiki === Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later! d5cb38142f5f6c95d1b51703ad03d6a637fa504e 134 133 2024-01-04T18:07:59Z Laggardson 2 wikitext text/x-wiki {{ColoredBox |title=Welcome! |background-title-color=#ff0000 |center-title=true |center-content=true |content= Welcome to Pest Control Wiki - a wiki for the actual-play podcast ''[[Pest Control]]''! <p><strong>Official Links</strong><br> [https://twitter.com/PestControlPod Twitter] • [https://cohost.org/pestcontrolpod Cohost] • [https://discord.gg/uv9bzF6RPY Discord] </p> <p><strong>Contribute to the Wiki</strong><br> <strong>{{NUMBEROFARTICLES}} PAGES</strong> • [[Getting Started]]</p> }} {{ColoredBox |title=Seasons |background-title-color=#ff0000 |center-title=true |content = {{ContentFlex |style=flex-wrap:wrap;justify-content:center;flex-grow:0 |content= {{Home season list item |filename= |imagepage= |text='''''[[Fate]]''''' }} {{Home season list item |filename= norfork_coverart.png |imagepage= |text='''''[[Norfork]]''''' }} }} |center-content=true }} {{ColoredBox |title = The Cast |background-title-color=#ff0000 |center-content=true|center-title=true |content = [[Sam Richardson]] • [[William White]] • [[Jonas Newhouse]] • [[Sam Darr]] }} __NOTOC__ == Welcome to {{SITENAME}}! == This Main Page was created automatically and it seems it hasn't been replaced yet. === For the bureaucrat(s) of this wiki === Hello, and welcome to your new wiki! Thank you for choosing Miraheze for the hosting of your wiki, we hope you will enjoy our hosting. You can immediately start working on your wiki or whenever you want. Need help? No problem! We will help you with your wiki as needed. To start, try checking out these helpful links: * [[mw:Special:MyLanguage/Help:Contents|MediaWiki guide]] (e.g. navigation, editing, deleting pages, blocking users) * [[meta:Special:MyLanguage/FAQ|Miraheze FAQ]] * [[meta:Special:MyLanguage/Request features|Request settings changes on your wiki]]. (Extensions, Skin and Logo/Favicon changes should be done through [[Special:ManageWiki]] on your wiki, see [[meta:Special:MyLanguage/ManageWiki|ManageWiki]] for more information.) ==== I still don't understand X! ==== Well, that's no problem. Even if something isn't explained in the documentation/FAQ, we are still happy to help you. You can find us here: * [[meta:Special:MyLanguage/Help center|On our own Miraheze wiki]] * On [[phab:|Phabricator]] * On [https://miraheze.org/discord Discord] * On IRC in #miraheze on irc.libera.chat ([irc://irc.libera.chat/%23miraheze direct link]; [https://web.libera.chat/?channel=#miraheze webchat]) === For visitors of this wiki === Hello, the default Main Page of this wiki (this page) has not yet been replaced by the bureaucrat(s) of this wiki. The bureaucrat(s) might still be working on a Main Page, so please check again later! edb2c8eca0d527e9b7986147d5b9f8e80e766c13 Norfork 01: Messages 0 62 137 2024-01-04T18:57:26Z Laggardson 2 Created page with "{{Infobox episode|color_theme=marielda|title = Four Conversations|episode_number = 10|release_date = September 15, 2016|previous_episode = [[The Valentine Affair Pt. 4]]|next_episode = [[The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 1]]|length = 109 min|episode_page = https://friendsatthetable.net/marielda-10-four-conversations |transcript = https://drive.google.com/open?id=1FZbTPPG_vD6f7eUTAC2jH-IoLBdbB8nneyUuzv_AZzs |score=Marielda: Frien..." wikitext text/x-wiki {{Infobox episode|color_theme=marielda|title = Four Conversations|episode_number = 10|release_date = September 15, 2016|previous_episode = [[The Valentine Affair Pt. 4]]|next_episode = [[The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 1]]|length = 109 min|episode_page = https://friendsatthetable.net/marielda-10-four-conversations |transcript = https://drive.google.com/open?id=1FZbTPPG_vD6f7eUTAC2jH-IoLBdbB8nneyUuzv_AZzs |score=[[Marielda: Friends At The Table Soundtrack, The Interlude|Marielda]]<br />[[Marielda: Friends At The Table Soundtrack, The Interlude|The Killing of the King-God Samothes By The Traitor Prince Maelgwyn, or The Marielda Suite]]|cast=[[Austin Walker]]<br />[[Ali Acampora]]<br />[[Andrew Lee Swan]]<br />[[Jack de Quidt]]<br />[[Sylvi Bullet]]|game=[[Blades in the Dark]]}} '''''Marielda'' 10: "Four Conversations"''' covers an extended downtime period of months between the end of The Valentine Affair and the start of [[The Six|the Six's]] final job. ==Episode description== == Contents== ===Opening=== === Plot === ====Opening==== ===Closing=== ==Cast == {{Norfork episodes}} {{NavboxNorfork}} [[Category:Norfork episodes]] [[Category:Norfork Arc 1 episodes]] a9f02f2a0a3cfe0775058a5aa2564858f8e30154 139 137 2024-01-04T19:02:39Z Laggardson 2 wikitext text/x-wiki {{Infobox episode |color_theme= |title = Messages |episode_number = 01 |release_date = |previous_episode = [[Norfork 00: The Ground Itself|The Ground Itself]] |next_episode = [[Norfork 02: Double-Take|Double-Take]] |length = 104min |episode_page = https://open.spotify.com/episode/0jDEtfiNFofdtMXGQ6weOE?si=4360fe9c202b4872 |transcript = |score= |cast= [[Sam Richardson]] <br> [[William White]] <br> [[Jonas Newhouse]] <br> [[Sam Darr]] |game=[[Monster of the Week]] }} '''''Marielda'' 10: "Four Conversations"''' covers an extended downtime period of months between the end of The Valentine Affair and the start of [[The Six|the Six's]] final job. ==Episode description== == Contents== ===Opening=== === Plot === ====Opening==== ===Closing=== ==Cast == {{Norfork episodes}} {{NavboxNorfork}} [[Category:Norfork episodes]] [[Category:Norfork Arc 1 episodes]] 1ec002979b3c2cd02644d7caa761f580a3f12e96 140 139 2024-01-04T19:11:29Z Laggardson 2 wikitext text/x-wiki {{Infobox episode |color_theme= |title = Messages |episode_number = 01 |release_date = |previous_episode = [[Norfork 00: The Ground Itself|The Ground Itself]] |next_episode = [[Norfork 02: Double-Take|Double-Take]] |length = 104min |episode_page = https://open.spotify.com/episode/0jDEtfiNFofdtMXGQ6weOE?si=4360fe9c202b4872 |transcript = |score= |cast= [[Sam Richardson]] <br> [[William White]] <br> [[Jonas Newhouse]] <br> [[Sam Darr]] |game=[[Monster of the Week]] }} ''Messages'' is the start of the first arc of the second season of [[Pest Control]]. ==Episode description== Welcome to Norfork - you need to leave. Kelly receives unexpected visitors. Rabbit has a performance review. Nammi gets a call that will change everything. ==Plot== A strange dream featuring a radio call-in show. A speaker who turned out to be a ghost. Ominous warnings about Norfork. <br> [[Kelly Aberdeen|Kelly]] is visited by [[Ripley Adams|Det. Ripley Adams]] and [[Majorie Sherridan|Officer Marjorie Sherridan]], who offer him a chance to join the newly formed [[Myriad Taskforce]], which he refuses. Kelly speaks briefly to [[Butch]] - the creature he had made a deal with after Det. Adams almost killed him - and Butch promises to deal with Det. Adams if the need arises. <br> [[Rabbit Moon|Rabbit]] (as [[Sage Brennan Schipp]]) is working at [[The Bunker]] - their latest odd job. They are admonished by fellow coworker [[Reina Germaine]] for slacking off, then got a call from their moms that [[Rosa Kalyani|Cold Moon]] wants to see them. At their mom’s house, Cold pulls them into a room alone to demonstrate their powers - which ended with Rabbit accidentally embedding a metal cube in the bedroom wall. Cold seemed unimpressed, but tells them to keep working on their skills. She also gives them a letter she needs delivered. <br> [[Nammi]] shows up to work at [[Hothouse Flowers]], but after one of her clients never shows up to pick up their arrangements she leaves to go hang out with Kelly and Rabbit, who pick her up on Rabbit’s motorcycle-sidecar [[Thumper]]. <br> At a local construction site, Kelly, Rabbit, and Nammi catch up. They realize they've all had the same dream - the one about that radio show - but their conversation is interrupted by a phone call from Nammi's missing client, [[Ace Aruna|Ace]. Ace confesses that they might not be along to pick up their flowers as their partner is missing, and there is blood on the ground of their home. They are panicked, believing that the police will assume it was them because they are a vampire. Nammi manages to talk them out of running off, and in the background of the call she hears the police arrive out front. Kelly demands that Rabbit drive them all to Ace’s address. ==Cast== {{Norfork episodes}} {{NavboxNorfork}} [[Category:Norfork episodes]] [[Category:Norfork Arc 1 episodes]] 346ace9b4c88af81f324a67ef9b15ab5c1b73104 141 140 2024-01-04T19:11:48Z Laggardson 2 wikitext text/x-wiki {{Infobox episode |color_theme= |title = Messages |episode_number = 01 |release_date = |previous_episode = [[Norfork 00: The Ground Itself|The Ground Itself]] |next_episode = [[Norfork 02: Double-Take|Double-Take]] |length = 104min |episode_page = https://open.spotify.com/episode/0jDEtfiNFofdtMXGQ6weOE?si=4360fe9c202b4872 |transcript = |score= |cast= [[Sam Richardson]] <br> [[William White]] <br> [[Jonas Newhouse]] <br> [[Sam Darr]] |game=[[Monster of the Week]] }} ''Messages'' is the start of the first arc of the second season of [[Pest Control]]. ==Episode description== Welcome to Norfork - you need to leave. Kelly receives unexpected visitors. Rabbit has a performance review. Nammi gets a call that will change everything. ==Plot== A strange dream featuring a radio call-in show. A speaker who turned out to be a ghost. Ominous warnings about Norfork. <br> [[Kelly Aberdeen|Kelly]] is visited by [[Ripley Adams|Det. Ripley Adams]] and [[Majorie Sherridan|Officer Marjorie Sherridan]], who offer him a chance to join the newly formed [[Myriad Taskforce]], which he refuses. Kelly speaks briefly to [[Butch]] - the creature he had made a deal with after Det. Adams almost killed him - and Butch promises to deal with Det. Adams if the need arises. <br> [[Rabbit Moon|Rabbit]] (as [[Sage Brennan Schipp]]) is working at [[The Bunker]] - their latest odd job. They are admonished by fellow coworker [[Reina Germaine]] for slacking off, then got a call from their moms that [[Rosa Kalyani|Cold Moon]] wants to see them. At their mom’s house, Cold pulls them into a room alone to demonstrate their powers - which ended with Rabbit accidentally embedding a metal cube in the bedroom wall. Cold seemed unimpressed, but tells them to keep working on their skills. She also gives them a letter she needs delivered. <br> [[Nammi]] shows up to work at [[Hothouse Flowers]], but after one of her clients never shows up to pick up their arrangements she leaves to go hang out with Kelly and Rabbit, who pick her up on Rabbit’s motorcycle-sidecar [[Thumper]]. <br> At a local construction site, Kelly, Rabbit, and Nammi catch up. They realize they've all had the same dream - the one about that radio show - but their conversation is interrupted by a phone call from Nammi's missing client, [[Ace Aruna|Ace]]. Ace confesses that they might not be along to pick up their flowers as their partner is missing, and there is blood on the ground of their home. They are panicked, believing that the police will assume it was them because they are a vampire. Nammi manages to talk them out of running off, and in the background of the call she hears the police arrive out front. Kelly demands that Rabbit drive them all to Ace’s address. ==Cast== {{Norfork episodes}} {{NavboxNorfork}} [[Category:Norfork episodes]] [[Category:Norfork Arc 1 episodes]] b21b4729b7b071b130e6cd9a3f96823d36baa4b8 143 141 2024-01-04T19:15:11Z Laggardson 2 wikitext text/x-wiki {{Infobox episode |color_theme= |title = Messages |episode_number = 01 |release_date = |previous_episode = [[Norfork 00: The Ground Itself|The Ground Itself]] |next_episode = [[Norfork 02: Double-Take|Double-Take]] |length = 104min |episode_page = https://open.spotify.com/episode/0jDEtfiNFofdtMXGQ6weOE?si=4360fe9c202b4872 |transcript = |score= |cast= [[Sam Richardson]] <br> [[William White]] <br> [[Jonas Newhouse]] <br> [[Sam Darr]] |game=[[Monster of the Week]] |content_warnings= Police, loss/grief, memory loss |arc= 1 }} ''Messages'' is the start of the first arc of the second season of [[Pest Control]]. ==Episode description== Welcome to Norfork - you need to leave. Kelly receives unexpected visitors. Rabbit has a performance review. Nammi gets a call that will change everything. ==Plot== A strange dream featuring a radio call-in show. A speaker who turned out to be a ghost. Ominous warnings about Norfork. <br> [[Kelly Aberdeen|Kelly]] is visited by [[Ripley Adams|Det. Ripley Adams]] and [[Majorie Sherridan|Officer Marjorie Sherridan]], who offer him a chance to join the newly formed [[Myriad Taskforce]], which he refuses. Kelly speaks briefly to [[Butch]] - the creature he had made a deal with after Det. Adams almost killed him - and Butch promises to deal with Det. Adams if the need arises. <br> [[Rabbit Moon|Rabbit]] (as [[Sage Brennan Schipp]]) is working at [[The Bunker]] - their latest odd job. They are admonished by fellow coworker [[Reina Germaine]] for slacking off, then got a call from their moms that [[Rosa Kalyani|Cold Moon]] wants to see them. At their mom’s house, Cold pulls them into a room alone to demonstrate their powers - which ended with Rabbit accidentally embedding a metal cube in the bedroom wall. Cold seemed unimpressed, but tells them to keep working on their skills. She also gives them a letter she needs delivered. <br> [[Nammi]] shows up to work at [[Hothouse Flowers]], but after one of her clients never shows up to pick up their arrangements she leaves to go hang out with Kelly and Rabbit, who pick her up on Rabbit’s motorcycle-sidecar [[Thumper]]. <br> At a local construction site, Kelly, Rabbit, and Nammi catch up. They realize they've all had the same dream - the one about that radio show - but their conversation is interrupted by a phone call from Nammi's missing client, [[Ace Aruna|Ace]]. Ace confesses that they might not be along to pick up their flowers as their partner is missing, and there is blood on the ground of their home. They are panicked, believing that the police will assume it was them because they are a vampire. Nammi manages to talk them out of running off, and in the background of the call she hears the police arrive out front. Kelly demands that Rabbit drive them all to Ace’s address. ==Cast== {{Norfork episodes}} {{NavboxNorfork}} [[Category:Norfork episodes]] [[Category:Norfork Arc 1 episodes]] 18f40e5ca705a1b98f0042902187c9f84d09c1fc Template:Infobox episode 10 63 138 2024-01-04T18:58:03Z Laggardson 2 Created page with "<onlyinclude><infobox theme-source="color_theme"> <title source="title"><default>{{PAGENAME}}</default></title> <image source="image"><caption source="caption"/></image> <group> <header>Episode information</header> <data source="episode_number"> <label>Episode</label> </data> <data source="live_date"> <label>Live Date</label> </data> <data source="patreon_date"> <label>Patreon Date</label> </data> <data source="rele..." wikitext text/x-wiki <onlyinclude><infobox theme-source="color_theme"> <title source="title"><default>{{PAGENAME}}</default></title> <image source="image"><caption source="caption"/></image> <group> <header>Episode information</header> <data source="episode_number"> <label>Episode</label> </data> <data source="live_date"> <label>Live Date</label> </data> <data source="patreon_date"> <label>Patreon Date</label> </data> <data source="release_date"> <label>Release Date</label> </data> <data source="length"> <label>Length</label> </data> <data source="content_warnings"> <label>Content Warnings</label> </data> </group> <group> <header>Meta</header> <data source="cast"> <label>Cast</label> </data> <data source="game"> <label>Game</label> </data> <data source="arc"> <label>Arc</label> </data> <data source="score"> <label>Score</label> </data> </group> <group layout="horizontal" collapse="open" row-items="2"> <header>Episode guide</header> <data source="previous_episode"> <label>Previous</label> <default> </default> </data> <data source="next_episode"> <label>Next</label> <default> </default> </data> <data source="previous_arc"> <label>Previous Arc</label> </data> <data source="next_arc"> <label>Next Arc</label> </data> </group> <group collapse="open"> <header>Links</header> <data source="episode_page"> <label>Episode Page</label> <format>[{{{episode_page}}} friendsatthetable.net]</format> </data> <data source="patreon_page"> <label>Patreon Page</label> <format>[{{{patreon_page}}} Patreon]</format> </data> <data source="livestream_page"> <label>Livestream</label> <format>[{{{livestream_page}}} {{{livestream_link_text}}}]</format> </data> <data source="transcript"> <label>Transcript</label> <format>[{{{transcript}}} Google Docs]</format> <default>''TBA''</default> </data> <data source="transcript_text"> <label>Transcript</label> </data> </group> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | {{#if: {{{color_theme|}}} || [[Category:Infoboxes with missing color theme]] }} | }}{{#ifeq: {{NAMESPACENUMBER}} | 0 | {{#if: {{{transcript|}}} || [[Category:Episodes without transcripts]] }} | }}</onlyinclude> <noinclude> {{documentation}} [[Category:Infoboxes]] </noinclude> 5bf8e787cea418aee75daeead5ca856eec156a37 142 138 2024-01-04T19:14:21Z Laggardson 2 wikitext text/x-wiki <onlyinclude><infobox theme-source="color_theme"> <title source="title"><default>{{PAGENAME}}</default></title> <image source="image"><caption source="caption"/></image> <group> <header>Episode information</header> <data source="episode_number"> <label>Episode</label> </data> <data source="live_date"> <label>Live Date</label> </data> <data source="patreon_date"> <label>Patreon Date</label> </data> <data source="release_date"> <label>Release Date</label> </data> <data source="length"> <label>Length</label> </data> <data source="content_warnings"> <label>Content Warnings</label> </data> </group> <group> <header>Meta</header> <data source="cast"> <label>Cast</label> </data> <data source="game"> <label>Game</label> </data> <data source="arc"> <label>Arc</label> </data> <data source="score"> <label>Score</label> </data> </group> <group layout="horizontal" collapse="open" row-items="2"> <header>Episode guide</header> <data source="previous_episode"> <label>Previous</label> <default> </default> </data> <data source="next_episode"> <label>Next</label> <default> </default> </data> <data source="previous_arc"> <label>Previous Arc</label> </data> <data source="next_arc"> <label>Next Arc</label> </data> </group> <group collapse="open"> <header>Links</header> <data source="episode_page"> <label>Episode Page</label> <format>[{{{episode_page}}} Spotify]</format> </data> <data source="patreon_page"> <label>Patreon Page</label> <format>[{{{patreon_page}}} Patreon]</format> </data> <data source="livestream_page"> <label>Livestream</label> <format>[{{{livestream_page}}} {{{livestream_link_text}}}]</format> </data> <data source="transcript"> <label>Transcript</label> <format>[{{{transcript}}} Google Docs]</format> <default>''TBA''</default> </data> <data source="transcript_text"> <label>Transcript</label> </data> </group> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | {{#if: {{{color_theme|}}} || [[Category:Infoboxes with missing color theme]] }} | }}{{#ifeq: {{NAMESPACENUMBER}} | 0 | {{#if: {{{transcript|}}} || [[Category:Episodes without transcripts]] }} | }}</onlyinclude> <noinclude> {{documentation}} [[Category:Infoboxes]] </noinclude> 429e68bd022a53bc1318290d2ac64f46f6eb5c48 144 142 2024-01-04T19:17:32Z Laggardson 2 wikitext text/x-wiki <onlyinclude><infobox theme-source="color_theme"> <title source="title"><default>{{PAGENAME}}</default></title> <image source="image"><caption source="caption"/></image> <group> <header>Episode information</header> <data source="episode_number"> <label>Episode</label> </data> <data source="live_date"> <label>Live Date</label> </data> <data source="patreon_date"> <label>Patreon Date</label> </data> <data source="release_date"> <label>Release Date</label> </data> <data source="length"> <label>Length</label> </data> <data source="content_warnings"> <label>Content Warnings</label> </data> </group> <group> <header>Meta</header> <data source="cast"> <label>Cast</label> </data> <data source="game"> <label>Game</label> </data> <data source="arc"> <label>Arc</label> </data> <data source="score"> <label>Score</label> </data> </group> <group layout="horizontal" collapse="open" row-items="2"> <header>Episode guide</header> <data source="previous_episode"> <label>Previous</label> <default> </default> </data> <data source="next_episode"> <label>Next</label> <default> </default> </data> <data source="previous_arc"> <label>Previous Arc</label> </data> <data source="next_arc"> <label>Next Arc</label> </data> </group> <group collapse="open"> <header>Links</header> <data source="episode_page"> <label>Episode Page</label> <format>[{{{episode_page}}} Spotify]</format> </data> <data source="patreon_page"> <label>Patreon Page</label> <format>[{{{patreon_page}}} Patreon]</format> </data> <data source="livestream_page"> <label>Livestream</label> <format>[{{{livestream_page}}} {{{livestream_link_text}}}]</format> </data> <data source="transcript"> <label>Transcript</label> <format>[{{{transcript}}} Google Docs]</format> <default>''TBA''</default> </data> <data source="transcript_text"> <label>Transcript</label> </data> </group> </infobox>{{#ifeq: {{NAMESPACENUMBER}} | 0 | {{#if: {{{color_theme|}}} || [[Category:Infoboxes with missing color theme]] }} | }}{{#ifeq: {{NAMESPACENUMBER}} | 0 | {{#if: {{{transcript|}}} || [[Category:Episodes without transcripts]] }} | }}</onlyinclude> <noinclude> {{documentation}} [[Category:Infoboxes]] </noinclude> {{Infobox episode |color_theme= |title = |episode_number = |release_date = |previous_episode = |next_episode = |length = |episode_page = |transcript = |score= |cast= [[Sam Richardson]] <br> [[William White]] <br> [[Jonas Newhouse]] <br> [[Sam Darr]] |game= |content_warnings= |arc= }} ==Episode description== ==Plot== ==Cast== {{Categories}} 1adf3d2393d734a0b19e27e7b5e9fbf6d7e45f35 Norfork 00: The Ground Itself 0 64 145 2024-01-04T19:18:19Z Laggardson 2 Created page with " {{Infobox episode |color_theme= |title = |episode_number = |release_date = |previous_episode = |next_episode = |length = |episode_page = |transcript = |score= |cast= [[Sam Richardson]] <br> [[William White]] <br> [[Jonas Newhouse]] <br> [[Sam Darr]] |game= |content_warnings= |arc= }} ==Episode description== ==Plot== ==Cast== {{Categories}}" wikitext text/x-wiki {{Infobox episode |color_theme= |title = |episode_number = |release_date = |previous_episode = |next_episode = |length = |episode_page = |transcript = |score= |cast= [[Sam Richardson]] <br> [[William White]] <br> [[Jonas Newhouse]] <br> [[Sam Darr]] |game= |content_warnings= |arc= }} ==Episode description== ==Plot== ==Cast== {{Categories}} 43cce79f73c7f0e8a2176dc36383411f1b349d66 Norfork 02: Double-Take 0 65 146 2024-01-04T19:18:39Z Laggardson 2 Created page with " {{Infobox episode |color_theme= |title = |episode_number = |release_date = |previous_episode = |next_episode = |length = |episode_page = |transcript = |score= |cast= [[Sam Richardson]] <br> [[William White]] <br> [[Jonas Newhouse]] <br> [[Sam Darr]] |game= |content_warnings= |arc= }} ==Episode description== ==Plot== ==Cast== {{Categories}}" wikitext text/x-wiki {{Infobox episode |color_theme= |title = |episode_number = |release_date = |previous_episode = |next_episode = |length = |episode_page = |transcript = |score= |cast= [[Sam Richardson]] <br> [[William White]] <br> [[Jonas Newhouse]] <br> [[Sam Darr]] |game= |content_warnings= |arc= }} ==Episode description== ==Plot== ==Cast== {{Categories}} 43cce79f73c7f0e8a2176dc36383411f1b349d66 Template:Navbox 10 66 147 2024-01-04T19:20:04Z Laggardson 2 Created page with "<includeonly>{{#invoke:Navbox|navbox}} </includeonly><noinclude> [https://www.mediawiki.org/wiki/Template:Navbox Mediawiki documentation] [[Category:Navboxes]]</noinclude>" wikitext text/x-wiki <includeonly>{{#invoke:Navbox|navbox}} </includeonly><noinclude> [https://www.mediawiki.org/wiki/Template:Navbox Mediawiki documentation] [[Category:Navboxes]]</noinclude> 9623819be89a7513a696cb2e87353818c38830e5 Template:Navbox/style.css 10 67 148 2024-01-04T19:20:46Z Laggardson 2 Created page with ".navbox-title a { color: black; text-decoration: underline; } .navbox-inner { border-spacing: 0; } .navbox { border-width: 2px; border-style: solid; padding: 0px !important; } .navbox-list { text-align: left !important; padding-left: 2px !important; }" sanitized-css text/css .navbox-title a { color: black; text-decoration: underline; } .navbox-inner { border-spacing: 0; } .navbox { border-width: 2px; border-style: solid; padding: 0px !important; } .navbox-list { text-align: left !important; padding-left: 2px !important; } fde1d68890d2e040c53411ab15c3402ef2e22a0f Template:NavboxFate 10 68 149 2024-01-04T19:24:33Z Laggardson 2 Created page with "<templatestyles src="Navbox/style.css"></templatestyles> {{navbox |title='''[[Marielda (season)|Marielda]]''' |navboxclass=navbox-marielda |above= [[Seasons of Hieron]] • [[Autumn in Hieron]] • '''[[Marielda (season)|Marielda]]''' • [[Winter in Hieron]] • [[Spring in Hieron]] |group1='''Characters''' |list1= {{Navbox|child |group1= Player Characters |list1= [[Keeley Stewart]] • [[Henrietta Salm]] • [[Maggie Thornback]] • [[Jamie Jesigo]] |group3=Non-Pla..." wikitext text/x-wiki <templatestyles src="Navbox/style.css"></templatestyles> {{navbox |title='''[[Marielda (season)|Marielda]]''' |navboxclass=navbox-marielda |above= [[Seasons of Hieron]] • [[Autumn in Hieron]] • '''[[Marielda (season)|Marielda]]''' • [[Winter in Hieron]] • [[Spring in Hieron]] |group1='''Characters''' |list1= {{Navbox|child |group1= Player Characters |list1= [[Keeley Stewart]] • [[Henrietta Salm]] • [[Maggie Thornback]] • [[Jamie Jesigo]] |group3=Non-Player Characters |list3= • ''[[:Category:Marielda characters|Full List]]'' }} |group2='''Locations''' |list2= [[The Dirge (location)The Dirge]] |group3='''Groups''' |list3={{Navbox|child |group1=Factions |list1= [[VaccuCon]] |group2= Peoples |list2= }} |group5='''Lore''' |list5= |group6='''Meta''' |list6= |below= ''Fate.'' }} <noinclude>[[Category:Navboxes]]</noinclude> 6d7e880d79f2818753a72814e5033d32451f8b15 Module:Navbar 828 69 150 2024-01-04T19:25:19Z Laggardson 2 Created page with "local p = {} local cfg = mw.loadData('Module:Navbar/configuration') local function get_title_arg(is_collapsible, template) local title_arg = 1 if is_collapsible then title_arg = 2 end if template then title_arg = 'template' end return title_arg end local function choose_links(template, args) -- The show table indicates the default displayed items. -- view, talk, edit, hist, move, watch -- TODO: Move to configuration. local show = {true, true, true, false, false..." Scribunto text/plain local p = {} local cfg = mw.loadData('Module:Navbar/configuration') local function get_title_arg(is_collapsible, template) local title_arg = 1 if is_collapsible then title_arg = 2 end if template then title_arg = 'template' end return title_arg end local function choose_links(template, args) -- The show table indicates the default displayed items. -- view, talk, edit, hist, move, watch -- TODO: Move to configuration. local show = {true, true, true, false, false, false} if template then show[2] = false show[3] = false local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6, talk = 2, edit = 3, hist = 4, move = 5, watch = 6} -- TODO: Consider removing TableTools dependency. for _, v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do local num = index[v] if num then show[num] = true end end end local remove_edit_link = args.noedit if remove_edit_link then show[3] = false end return show end local function add_link(link_description, ul, is_mini, font_style) local l if link_description.url then l = {'[', '', ']'} else l = {'[[', '|', ']]'} end ul:tag('li') :addClass('nv-' .. link_description.full) :wikitext(l[1] .. link_description.link .. l[2]) :tag(is_mini and 'abbr' or 'span') :attr('title', link_description.html_title) :cssText(font_style) :wikitext(is_mini and link_description.mini or link_description.full) :done() :wikitext(l[3]) :done() end local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style) local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace) if not title then error(cfg.invalid_title .. title_text) end local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or '' -- TODO: Get link_descriptions and show into the configuration module. -- link_descriptions should be easier... local link_descriptions = { { ['mini'] = 'v', ['full'] = 'view', ['html_title'] = 'View this template', ['link'] = title.fullText, ['url'] = false }, { ['mini'] = 't', ['full'] = 'talk', ['html_title'] = 'Discuss this template', ['link'] = talkpage, ['url'] = false }, { ['mini'] = 'e', ['full'] = 'edit', ['html_title'] = 'Edit this template', ['link'] = title:fullUrl('action=edit'), ['url'] = true }, { ['mini'] = 'h', ['full'] = 'hist', ['html_title'] = 'History of this template', ['link'] = title:fullUrl('action=history'), ['url'] = true }, { ['mini'] = 'm', ['full'] = 'move', ['html_title'] = 'Move this template', ['link'] = mw.title.new('Special:Movepage'):fullUrl('target='..title.fullText), ['url'] = true }, { ['mini'] = 'w', ['full'] = 'watch', ['html_title'] = 'Watch this template', ['link'] = title:fullUrl('action=watch'), ['url'] = true } } local ul = mw.html.create('ul') if has_brackets then ul:addClass(cfg.classes.brackets) :cssText(font_style) end for i, _ in ipairs(displayed_links) do if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end end return ul:done() end function p._navbar(args) -- TODO: We probably don't need both fontstyle and fontcolor... local font_style = args.fontstyle local font_color = args.fontcolor local is_collapsible = args.collapsible local is_mini = args.mini local is_plain = args.plain local collapsible_class = nil if is_collapsible then collapsible_class = cfg.classes.collapsible if not is_plain then is_mini = 1 end if font_color then font_style = (font_style or '') .. '; color: ' .. font_color .. ';' end end local navbar_style = args.style local div = mw.html.create():tag('div') div :addClass(cfg.classes.navbar) :addClass(cfg.classes.plainlinks) :addClass(cfg.classes.horizontal_list) :addClass(collapsible_class) -- we made the determination earlier :cssText(navbar_style) if is_mini then div:addClass(cfg.classes.mini) end local box_text = (args.text or cfg.box_text) .. ' ' -- the concatenated space guarantees the box text is separated if not (is_mini or is_plain) then div :tag('span') :addClass(cfg.classes.box_text) :cssText(font_style) :wikitext(box_text) end local template = args.template local displayed_links = choose_links(template, args) local has_brackets = args.brackets local title_arg = get_title_arg(is_collapsible, template) local title_text = args[title_arg] or (':' .. mw.getCurrentFrame():getParent():getTitle()) local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style) div:node(list) if is_collapsible then local title_text_class if is_mini then title_text_class = cfg.classes.collapsible_title_mini else title_text_class = cfg.classes.collapsible_title_full end div:done() :tag('div') :addClass(title_text_class) :cssText(font_style) :wikitext(args[1]) end return mw.getCurrentFrame():extensionTag{ name = 'templatestyles', args = { src = cfg.templatestyles } } .. tostring(div:done()) end function p.navbar(frame) return p._navbar(require('Module:Arguments').getArgs(frame)) end return p a5c8d3a8f8beb18984ea7f145ddbdf88a065d23e Module:Navbar/configuration 828 70 151 2024-01-04T19:26:38Z Laggardson 2 Created page with "return { ['templatestyles'] = 'Module:Navbar/styles.css', ['box_text'] = 'This box: ', -- default text box when not plain or mini ['title_namespace'] = 'Template', -- namespace to default to for title ['invalid_title'] = 'Invalid title ', ['classes'] = { -- set a line to nil if you don't want it ['navbar'] = 'navbar', ['plainlinks'] = 'plainlinks', -- plainlinks ['horizontal_list'] = 'hlist', -- horizontal list class ['mini'] = 'navbar-mini', -- class ind..." Scribunto text/plain return { ['templatestyles'] = 'Module:Navbar/styles.css', ['box_text'] = 'This box: ', -- default text box when not plain or mini ['title_namespace'] = 'Template', -- namespace to default to for title ['invalid_title'] = 'Invalid title ', ['classes'] = { -- set a line to nil if you don't want it ['navbar'] = 'navbar', ['plainlinks'] = 'plainlinks', -- plainlinks ['horizontal_list'] = 'hlist', -- horizontal list class ['mini'] = 'navbar-mini', -- class indicating small links in the navbar ['this_box'] = 'navbar-boxtext', ['brackets'] = 'navbar-brackets', -- 'collapsible' is the key for a class to indicate the navbar is -- setting up the collapsible element in addition to the normal -- navbar. ['collapsible'] = 'navbar-collapse', ['collapsible_title_mini'] = 'navbar-ct-mini', ['collapsible_title_full'] = 'navbar-ct-full' } } bbf3d86b48a5b40835e8e232ae9821e6bca390ec Module:Navbox/styles.css 828 71 152 2024-01-04T19:27:38Z Laggardson 2 Created page with "/* {{pp|small=yes}} */ .navbar { display: inline; font-size: 88%; font-weight: normal; } .navbar-collapse { float: left; text-align: left; } .navbar-boxtext { word-spacing: 0; } .navbar ul { display: inline-block; white-space: nowrap; line-height: inherit; } .navbar-brackets::before { margin-right: -0.125em; content: '[ '; } .navbar-brackets::after { margin-left: -0.125em; content: ' ]'; } .navbar li { word-spacing: -0.125em; } .navbar a > span, .nav..." sanitized-css text/css /* {{pp|small=yes}} */ .navbar { display: inline; font-size: 88%; font-weight: normal; } .navbar-collapse { float: left; text-align: left; } .navbar-boxtext { word-spacing: 0; } .navbar ul { display: inline-block; white-space: nowrap; line-height: inherit; } .navbar-brackets::before { margin-right: -0.125em; content: '[ '; } .navbar-brackets::after { margin-left: -0.125em; content: ' ]'; } .navbar li { word-spacing: -0.125em; } .navbar a > span, .navbar a > abbr { text-decoration: inherit; } .navbar-mini abbr { font-variant: small-caps; border-bottom: none; text-decoration: none; cursor: inherit; } .navbar-ct-full { font-size: 114%; margin: 0 7em; } .navbar-ct-mini { font-size: 114%; margin: 0 4em; } 9d4056f949b4f0b159e3d40dfb1a5f01e72f9571 Template:NavboxFate 10 68 153 149 2024-01-04T19:28:49Z Laggardson 2 wikitext text/x-wiki <templatestyles src="Navbox/style.css"></templatestyles> {{navbox |title='''[[Fate]]''' |navboxclass=navbox-marielda |above= [[Seasons of Hieron]] • [[Autumn in Hieron]] • '''[[Marielda (season)|Marielda]]''' • [[Winter in Hieron]] • [[Spring in Hieron]] |group1='''Characters''' |list1= {{Navbox|child |group1= Player Characters |list1= [[Keeley Stewart]] • [[Henrietta Salm]] • [[Maggie Thornback]] • [[Jamie Jesigo]] |group3=Non-Player Characters |list3= • ''[[:Category:Marielda characters|Full List]]'' }} |group2='''Locations''' |list2= [[The Dirge (location)The Dirge]] |group3='''Groups''' |list3={{Navbox|child |group1=Factions |list1= [[VaccuCon]] |group2= Peoples |list2= }} |group5='''Lore''' |list5= |group6='''Meta''' |list6= |below= ''Fate.'' }} <noinclude>[[Category:Navboxes]]</noinclude> e32f6da9d9e2c5718b59c55c301e03bfc2f7f463 154 153 2024-01-04T19:30:29Z Laggardson 2 wikitext text/x-wiki <templatestyles src="Navbox/styles.css"></templatestyles> {{navbox |title='''[[Fate]]''' |navboxclass=navbox-fate |above= [[Seasons of Hieron]] • [[Autumn in Hieron]] • '''[[Marielda (season)|Marielda]]''' • [[Winter in Hieron]] • [[Spring in Hieron]] |group1='''Characters''' |list1= {{Navbox|child |group1= Player Characters |list1= [[Keeley Stewart]] • [[Henrietta Salm]] • [[Maggie Thornback]] • [[Jamie Jesigo]] |group3=Non-Player Characters |list3= • ''[[:Category:Marielda characters|Full List]]'' }} |group2='''Locations''' |list2= [[The Dirge (location)|The Dirge]] |group3='''Groups''' |list3={{Navbox|child |group1=Factions |list1= [[VaccuCon]] |group2= Peoples |list2= }} |group5='''Lore''' |list5= |group6='''Meta''' |list6= |below= ''Fate.'' }} <noinclude>[[Category:Navboxes]]</noinclude> 6989a1cf22ac580c8cbafb60ada78ed88e87304b 155 154 2024-01-04T19:30:44Z Laggardson 2 wikitext text/x-wiki <templatestyles src="Navbox/style.css"></templatestyles> {{navbox |title='''[[Fate]]''' |navboxclass=navbox-fate |above= [[Seasons of Hieron]] • [[Autumn in Hieron]] • '''[[Marielda (season)|Marielda]]''' • [[Winter in Hieron]] • [[Spring in Hieron]] |group1='''Characters''' |list1= {{Navbox|child |group1= Player Characters |list1= [[Keeley Stewart]] • [[Henrietta Salm]] • [[Maggie Thornback]] • [[Jamie Jesigo]] |group3=Non-Player Characters |list3= • ''[[:Category:Marielda characters|Full List]]'' }} |group2='''Locations''' |list2= [[The Dirge (location)|The Dirge]] |group3='''Groups''' |list3={{Navbox|child |group1=Factions |list1= [[VaccuCon]] |group2= Peoples |list2= }} |group5='''Lore''' |list5= |group6='''Meta''' |list6= |below= ''Fate.'' }} <noinclude>[[Category:Navboxes]]</noinclude> 8c94d6c5e97dee4ef2ac8aaa94bf99d82ad16d75 156 155 2024-01-04T19:31:29Z Laggardson 2 wikitext text/x-wiki <templatestyles src="Navbox/style.css"></templatestyles> {{navbox |title='''[[Fate]]''' |navboxclass=navbox-fate |above= [[Norfork]] |group1='''Characters''' |list1= {{Navbox|child |group1= Player Characters |list1= [[Keeley Stewart]] • [[Henrietta Salm]] • [[Maggie Thornback]] • [[Jamie Jesigo]] |group3=Non-Player Characters |list3= • ''[[:Category:Marielda characters|Full List]]'' }} |group2='''Locations''' |list2= [[The Dirge (location)|The Dirge]] |group3='''Groups''' |list3={{Navbox|child |group1=Factions |list1= [[VaccuCon]] |group2= Peoples |list2= }} |group5='''Lore''' |list5= |group6='''Meta''' |list6= |below= ''Fate.'' }} <noinclude>[[Category:Navboxes]]</noinclude> 8db9e3afc8ff032704fea0db3e89cae063e21e2a Module:Navbox/ 828 72 157 2024-01-04T19:34:53Z Laggardson 2 Created page with "-- -- This module implements {{Navbox}} -- local p = {} local navbar = require('Module:Navbar')._navbar local getArgs -- lazily initialized local args local border local listnums local ODD_EVEN_MARKER = '\127_ODDEVEN_\127' local RESTART_MARKER = '\127_ODDEVEN0_\127' local REGEX_MARKER = '\127_ODDEVEN(%d?)_\127' local function striped(wikitext) -- Return wikitext with markers replaced for odd/even striping. -- Child (subgroup) navboxes are flagged with a category th..." Scribunto text/plain -- -- This module implements {{Navbox}} -- local p = {} local navbar = require('Module:Navbar')._navbar local getArgs -- lazily initialized local args local border local listnums local ODD_EVEN_MARKER = '\127_ODDEVEN_\127' local RESTART_MARKER = '\127_ODDEVEN0_\127' local REGEX_MARKER = '\127_ODDEVEN(%d?)_\127' local function striped(wikitext) -- Return wikitext with markers replaced for odd/even striping. -- Child (subgroup) navboxes are flagged with a category that is removed -- by parent navboxes. The result is that the category shows all pages -- where a child navbox is not contained in a parent navbox. local orphanCat = '[[Category:Navbox orphans]]' if border == 'subgroup' and args.orphan ~= 'yes' then -- No change; striping occurs in outermost navbox. return wikitext .. orphanCat end local first, second = 'odd', 'even' if args.evenodd then if args.evenodd == 'swap' then first, second = second, first else first = args.evenodd second = first end end local changer if first == second then changer = first else local index = 0 changer = function (code) if code == '0' then -- Current occurrence is for a group before a nested table. -- Set it to first as a valid although pointless class. -- The next occurrence will be the first row after a title -- in a subgroup and will also be first. index = 0 return first end index = index + 1 return index % 2 == 1 and first or second end end local regex = orphanCat:gsub('([%[%]])', '%%%1') return (wikitext:gsub(regex, ''):gsub(REGEX_MARKER, changer)) -- () omits gsub count end local function processItem(item, nowrapitems) if item:sub(1, 2) == '{|' then -- Applying nowrap to lines in a table does not make sense. -- Add newlines to compensate for trim of x in |parm=x in a template. return '\n' .. item ..'\n' end if nowrapitems == 'yes' then local lines = {} for line in (item .. '\n'):gmatch('([^\n]*)\n') do local prefix, content = line:match('^([*:;#]+)%s*(.*)') if prefix and not content:match('^<span class="nowrap">') then line = prefix .. '<span class="nowrap">' .. content .. '</span>' end table.insert(lines, line) end item = table.concat(lines, '\n') end if item:match('^[*:;#]') then return '\n' .. item ..'\n' end return item end -- Separate function so that we can evaluate properly whether hlist should -- be added by the module local function has_navbar() return args.navbar ~= 'off' and args.navbar ~= 'plain' and (args.name or mw.getCurrentFrame():getParent():getTitle():gsub('/sandbox$', '') ~= 'Template:Navbox') end local function renderNavBar(titleCell) if has_navbar() then titleCell:wikitext(navbar{ args.name, -- we depend on this being mini = 1 when the navbox module decides -- to add hlist templatestyles. we also depend on navbar outputting -- a copy of the hlist templatestyles. mini = 1, fontstyle = (args.basestyle or '') .. ';' .. (args.titlestyle or '') .. ';' }) end end -- -- Title row -- local function renderTitleRow(tbl) if not args.title then return end local titleRow = tbl:tag('tr') if args.titlegroup then titleRow :tag('th') :attr('scope', 'row') :addClass('navbox-group') :addClass(args.titlegroupclass) :cssText(args.basestyle) :cssText(args.groupstyle) :cssText(args.titlegroupstyle) :wikitext(args.titlegroup) end local titleCell = titleRow:tag('th'):attr('scope', 'col') if args.titlegroup then titleCell :addClass('navbox-title1') end local titleColspan = 2 if args.imageleft then titleColspan = titleColspan + 1 end if args.image then titleColspan = titleColspan + 1 end if args.titlegroup then titleColspan = titleColspan - 1 end titleCell :cssText(args.basestyle) :cssText(args.titlestyle) :addClass('navbox-title') :addClass(args.titleclass) :attr('colspan', titleColspan) renderNavBar(titleCell) titleCell :tag('div') -- id for aria-labelledby attribute :attr('id', mw.uri.anchorEncode(args.title)) :css('font-size', '114%') :css('margin', '0 4em') :wikitext(processItem(args.title)) end -- -- Above/Below rows -- local function getAboveBelowColspan() local ret = 2 if args.imageleft then ret = ret + 1 end if args.image then ret = ret + 1 end return ret end local function renderAboveRow(tbl) if not args.above then return end tbl:tag('tr') :tag('td') :addClass('navbox-abovebelow') :addClass(args.aboveclass) :cssText(args.basestyle) :cssText(args.abovestyle) :attr('colspan', getAboveBelowColspan()) :tag('div') -- id for aria-labelledby attribute, if no title :attr('id', args.title and nil or mw.uri.anchorEncode(args.above)) :wikitext(processItem(args.above, args.nowrapitems)) end local function renderBelowRow(tbl) if not args.below then return end tbl:tag('tr') :tag('td') :addClass('navbox-abovebelow') :addClass(args.belowclass) :cssText(args.basestyle) :cssText(args.belowstyle) :attr('colspan', getAboveBelowColspan()) :tag('div') :wikitext(processItem(args.below, args.nowrapitems)) end -- -- List rows -- local function renderListRow(tbl, index, listnum) local row = tbl:tag('tr') if index == 1 and args.imageleft then row :tag('td') :addClass('navbox-image') :addClass(args.imageclass) :css('width', '1px') -- Minimize width :css('padding', '0px 2px 0px 0px') :cssText(args.imageleftstyle) :attr('rowspan', #listnums) :tag('div') :wikitext(processItem(args.imageleft)) end if args['group' .. listnum] then local groupCell = row:tag('th') -- id for aria-labelledby attribute, if lone group with no title or above if listnum == 1 and not (args.title or args.above or args.group2) then groupCell :attr('id', mw.uri.anchorEncode(args.group1)) end groupCell :attr('scope', 'row') :addClass('navbox-group') :addClass(args.groupclass) :cssText(args.basestyle) :css('width', args.groupwidth or '1%') -- If groupwidth not specified, minimize width groupCell :cssText(args.groupstyle) :cssText(args['group' .. listnum .. 'style']) :wikitext(args['group' .. listnum]) end local listCell = row:tag('td') if args['group' .. listnum] then listCell :addClass('navbox-list1') else listCell:attr('colspan', 2) end if not args.groupwidth then listCell:css('width', '100%') end local rowstyle -- usually nil so cssText(rowstyle) usually adds nothing if index % 2 == 1 then rowstyle = args.oddstyle else rowstyle = args.evenstyle end local listText = args['list' .. listnum] local oddEven = ODD_EVEN_MARKER if listText:sub(1, 12) == '</div><table' then -- Assume list text is for a subgroup navbox so no automatic striping for this row. oddEven = listText:find('<th[^>]*"navbox%-title"') and RESTART_MARKER or 'odd' end listCell :css('padding', '0px') :cssText(args.liststyle) :cssText(rowstyle) :cssText(args['list' .. listnum .. 'style']) :addClass('navbox-list') :addClass('navbox-' .. oddEven) :addClass(args.listclass) :addClass(args['list' .. listnum .. 'class']) :tag('div') :css('padding', (index == 1 and args.list1padding) or args.listpadding) :wikitext(processItem(listText, args.nowrapitems)) if index == 1 and args.image then row :tag('td') :addClass('navbox-image') :addClass(args.imageclass) :css('width', '1px') -- Minimize width :css('padding', '0px 0px 0px 2px') :cssText(args.imagestyle) :attr('rowspan', #listnums) :tag('div') :wikitext(processItem(args.image)) end end -- -- Tracking categories -- local function needsHorizontalLists() if border == 'subgroup' or args.tracking == 'no' then return false end local listClasses = { ['plainlist'] = true, ['hlist'] = true, ['hlist hnum'] = true, ['hlist hwrap'] = true, ['hlist vcard'] = true, ['vcard hlist'] = true, ['hlist vevent'] = true, } return not (listClasses[args.listclass] or listClasses[args.bodyclass]) end -- there are a lot of list classes in the wild, so we have a function to find -- them and add their TemplateStyles local function addListStyles() local frame = mw.getCurrentFrame() -- TODO?: Should maybe take a table of classes for e.g. hnum, hwrap as above -- I'm going to do the stupid thing first though -- Also not sure hnum and hwrap are going to live in the same TemplateStyles -- as hlist local function _addListStyles(htmlclass, templatestyles) local class_args = { -- rough order of probability of use 'bodyclass', 'listclass', 'aboveclass', 'belowclass', 'titleclass', 'navboxclass', 'groupclass', 'titlegroupclass', 'imageclass' } local patterns = { '^' .. htmlclass .. '$', '%s' .. htmlclass .. '$', '^' .. htmlclass .. '%s', '%s' .. htmlclass .. '%s' } local found = false for _, arg in ipairs(class_args) do for _, pattern in ipairs(patterns) do if mw.ustring.find(args[arg] or '', pattern) then found = true break end end if found then break end end if found then return frame:extensionTag{ name = 'templatestyles', args = { src = templatestyles } } else return '' end end local hlist_styles = '' -- navbar always has mini = 1, so here (on this wiki) we can assume that -- we don't need to output hlist styles in navbox again. if not has_navbar() then hlist_styles = _addListStyles('hlist', 'Flatlist/styles.css') end local plainlist_styles = _addListStyles('plainlist', 'Plainlist/styles.css') return hlist_styles .. plainlist_styles end local function hasBackgroundColors() for _, key in ipairs({'titlestyle', 'groupstyle', 'basestyle', 'abovestyle', 'belowstyle'}) do if tostring(args[key]):find('background', 1, true) then return true end end end local function hasBorders() for _, key in ipairs({'groupstyle', 'basestyle', 'abovestyle', 'belowstyle'}) do if tostring(args[key]):find('border', 1, true) then return true end end end local function isIllegible() -- require('Module:Color contrast') absent on mediawiki.org return false end local function getTrackingCategories() local cats = {} if needsHorizontalLists() then table.insert(cats, 'Navigational boxes without horizontal lists') end if hasBackgroundColors() then table.insert(cats, 'Navboxes using background colours') end if isIllegible() then table.insert(cats, 'Potentially illegible navboxes') end if hasBorders() then table.insert(cats, 'Navboxes using borders') end return cats end local function renderTrackingCategories(builder) local title = mw.title.getCurrentTitle() if title.namespace ~= 10 then return end -- not in template space local subpage = title.subpageText if subpage == 'doc' or subpage == 'sandbox' or subpage == 'testcases' then return end for _, cat in ipairs(getTrackingCategories()) do builder:wikitext('[[Category:' .. cat .. ']]') end end -- -- Main navbox tables -- local function renderMainTable() local tbl = mw.html.create('table') :addClass('nowraplinks') :addClass(args.bodyclass) if args.title and (args.state ~= 'plain' and args.state ~= 'off') then if args.state == 'collapsed' then args.state = 'mw-collapsed' end tbl :addClass('mw-collapsible') :addClass(args.state or 'autocollapse') end tbl:css('border-spacing', 0) if border == 'subgroup' or border == 'none' then tbl :addClass('navbox-subgroup') :cssText(args.bodystyle) :cssText(args.style) else -- regular navbox - bodystyle and style will be applied to the wrapper table tbl :addClass('navbox-inner') :css('background', 'transparent') :css('color', 'inherit') end tbl:cssText(args.innerstyle) renderTitleRow(tbl) renderAboveRow(tbl) for i, listnum in ipairs(listnums) do renderListRow(tbl, i, listnum) end renderBelowRow(tbl) return tbl end function p._navbox(navboxArgs) args = navboxArgs listnums = {} for k, _ in pairs(args) do if type(k) == 'string' then local listnum = k:match('^list(%d+)$') if listnum then table.insert(listnums, tonumber(listnum)) end end end table.sort(listnums) border = mw.text.trim(args.border or args[1] or '') if border == 'child' then border = 'subgroup' end -- render the main body of the navbox local tbl = renderMainTable() -- get templatestyles local frame = mw.getCurrentFrame() local base_templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = 'Module:Navbox/styles.css' } } local templatestyles = '' if args.templatestyles and args.templatestyles ~= '' then templatestyles = frame:extensionTag{ name = 'templatestyles', args = { src = args.templatestyles } } end local res = mw.html.create() -- 'navbox-styles' exists for two reasons: -- 1. To wrap the styles to work around phab: T200206 more elegantly. Instead -- of combinatorial rules, this ends up being linear number of CSS rules. -- 2. To allow MobileFrontend to rip the styles out with 'nomobile' such that -- they are not dumped into the mobile view. if border ~= 'subgroup' then res:tag('div') :addClass('navbox-styles') :addClass('nomobile') :wikitext(base_templatestyles .. templatestyles) :done() end -- render the appropriate wrapper around the navbox, depending on the border param if border == 'none' then local nav = res:tag('div') :attr('role', 'navigation') :wikitext(addListStyles()) :node(tbl) -- aria-labelledby title, otherwise above, otherwise lone group if args.title or args.above or (args.group1 and not args.group2) then nav:attr('aria-labelledby', mw.uri.anchorEncode(args.title or args.above or args.group1)) else nav:attr('aria-label', 'Navbox') end elseif border == 'subgroup' then -- We assume that this navbox is being rendered in a list cell of a -- parent navbox, and is therefore inside a div with padding:0em 0.25em. -- We start with a </div> to avoid the padding being applied, and at the -- end add a <div> to balance out the parent's </div> res :wikitext('</div>') :wikitext(addListStyles()) :node(tbl) :wikitext('<div>') else local nav = res:tag('div') :attr('role', 'navigation') :addClass('navbox') :addClass(args.navboxclass) :cssText(args.bodystyle) :cssText(args.style) :wikitext(addListStyles()) :node(tbl) -- aria-labelledby title, otherwise above, otherwise lone group if args.title or args.above or (args.group1 and not args.group2) then nav:attr('aria-labelledby', mw.uri.anchorEncode(args.title or args.above or args.group1)) else nav:attr('aria-label', 'Navbox') end end if (args.nocat or 'false'):lower() == 'false' then renderTrackingCategories(res) end return striped(tostring(res)) end function p.navbox(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end args = getArgs(frame, {wrappers = {'Template:Navbox', 'Template:Navbox subgroup'}}) if frame.args.border then -- This allows Template:Navbox_subgroup to use {{#invoke:Navbox|navbox|border=...}}. args.border = frame.args.border end -- Read the arguments in the order they'll be output in, to make references number in the right order. local _ _ = args.title _ = args.above for i = 1, 20 do _ = args["group" .. tostring(i)] _ = args["list" .. tostring(i)] end _ = args.below return p._navbox(args) end return p 0138b52c0f1709b177082808740005b88713728d 158 157 2024-01-04T19:35:34Z Laggardson 2 Blanked the page Scribunto text/plain da39a3ee5e6b4b0d3255bfef95601890afd80709 Template:Seasons 10 73 159 2024-01-04T20:08:11Z Laggardson 2 Created page with "<templatestyles src="Navbox/style.css"></templatestyles>{{navbox |title= Seasons |titlestyle=background:#fdebbb |basestyle=background:#FFFBE6 |bodystyle=border:2px solid #fdcd5e; padding:0px !important |liststyle=padding:3px;text-align:left |list1= ''[[Fate]]'' • ''[[Norfork]]'' }}<noinclude> [[Category:Navboxes]]</noinclude>" wikitext text/x-wiki <templatestyles src="Navbox/style.css"></templatestyles>{{navbox |title= Seasons |titlestyle=background:#fdebbb |basestyle=background:#FFFBE6 |bodystyle=border:2px solid #fdcd5e; padding:0px !important |liststyle=padding:3px;text-align:left |list1= ''[[Fate]]'' • ''[[Norfork]]'' }}<noinclude> [[Category:Navboxes]]</noinclude> e4a7c115ec47428dc1c4b0cf06db87949ca4c569 160 159 2024-01-04T20:08:54Z Laggardson 2 wikitext text/x-wiki <templatestyles src="Navbox/style.css"></templatestyles>{{navbox |title= Seasons |titlestyle=background:#fdebbb |basestyle=background:#FF0000 |bodystyle=border:2px solid #fdcd5e; padding:0px !important |liststyle=padding:3px;text-align:center |list1= ''[[Fate]]'' • ''[[Norfork]]'' }}<noinclude> [[Category:Navboxes]]</noinclude> 95e8f869970c9da94e1989c5bd0bd8ec503f1f30 161 160 2024-01-04T20:09:25Z Laggardson 2 wikitext text/x-wiki <templatestyles src="Navbox/style.css"></templatestyles>{{navbox |title= Seasons |titlestyle=background:#ff0000 |basestyle=background:#FF0000 |bodystyle=border:2px solid #fdcd5e; padding:0px !important |liststyle=padding:3px;text-align:center |list1= ''[[Fate]]'' • ''[[Norfork]]'' }}<noinclude> [[Category:Navboxes]]</noinclude> fb7b2b766cd8cb9fe648184c0376ea97bc3f6264 Template:Navbox episode table 10 74 162 2024-01-04T20:15:48Z Laggardson 2 Created page with "<div class="episode-table-body"> {{{content}}} </div><templatestyles src="Navbox episode table/style.css"></templatestyles>" wikitext text/x-wiki <div class="episode-table-body"> {{{content}}} </div><templatestyles src="Navbox episode table/style.css"></templatestyles> d7a57f85d8717c6cfa93d050f3b3213202533592 Template:Navbox episode table/style.css 10 75 163 2024-01-04T20:17:00Z Laggardson 2 Created page with ".episode-table-body { column-count:1; column-gap:2px; } @media only screen and (min-width:650px) { .episode-table-body { column-count:2; } } @media only screen and (min-width:1000px) { .episode-table-body { column-count:3; } } .episode-table-row { break-inside:avoid; margin-bottom:2px } .episode-table-row:nth-child(odd) { background-color:#f7f7f7 }" sanitized-css text/css .episode-table-body { column-count:1; column-gap:2px; } @media only screen and (min-width:650px) { .episode-table-body { column-count:2; } } @media only screen and (min-width:1000px) { .episode-table-body { column-count:3; } } .episode-table-row { break-inside:avoid; margin-bottom:2px } .episode-table-row:nth-child(odd) { background-color:#f7f7f7 } 7e641f979823a6a25deb686be74c0e4990073d68 Template:Navbox episode table col 10 76 164 2024-01-04T20:18:20Z Laggardson 2 Created page with "<div class="episode-table-col" style="flex-grow:1;flex-basis:calc(calc(800px - 100%) * 999)"> {{{rows}}} </div>" wikitext text/x-wiki <div class="episode-table-col" style="flex-grow:1;flex-basis:calc(calc(800px - 100%) * 999)"> {{{rows}}} </div> 94deae10fa722c421cca04a6b5404ea5ed0eeae1 Template:Navbox episode table row 10 77 165 2024-01-04T20:19:01Z Laggardson 2 Created page with "<div class="episode-table-row" style="display:flex"><div class="episode-number navbox-group" style="width:3em;text-align:center;flex-shrink:0;padding:0">{{{1}}}</div><div class="episode-title" style="flex-grow:1;padding-left:2px;flex-wrap:nowrap;text-align:left">{{{2}}}</div></div>" wikitext text/x-wiki <div class="episode-table-row" style="display:flex"><div class="episode-number navbox-group" style="width:3em;text-align:center;flex-shrink:0;padding:0">{{{1}}}</div><div class="episode-title" style="flex-grow:1;padding-left:2px;flex-wrap:nowrap;text-align:left">{{{2}}}</div></div> 8530aa0686f36e3900176bce0bac7fb6f0ab1583 MediaWiki:Sidebar 8 3 166 5 2024-01-04T20:26:11Z Laggardson 2 wikitext text/x-wiki *Seasons **Fate|Fate **Norfork|Norfork <br> *Navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * SEARCH * TOOLBOX * LANGUAGES da631a75c15d44f3ee03535e43f0c7fdc74b96d0 167 166 2024-01-04T20:28:23Z Laggardson 2 wikitext text/x-wiki *Placeholder *Seasons **Fate **Fate * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * SEARCH * TOOLBOX *Contributors * LANGUAGES d288f2460fd1e304f04139775be944b08ca79cac 168 167 2024-01-04T20:29:50Z Laggardson 2 Undo revision 167 by [[Special:Contributions/Laggardson|Laggardson]] ([[User talk:Laggardson|talk]]) wikitext text/x-wiki *Seasons **Fate|Fate **Norfork|Norfork <br> *Navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help-mediawiki * SEARCH * TOOLBOX * LANGUAGES da631a75c15d44f3ee03535e43f0c7fdc74b96d0 Template:Fate episodes 10 78 169 2024-01-04T20:39:33Z Laggardson 2 Created page with "<templatestyles src="Navbox/style.css"></templatestyles> {{navbox |title= ''[[Marielda (season)|Marielda]]'' [[List of Seasons of Hieron episodes|episodes]] |navboxclass= navbox-marielda |state= collapsed |list1= {{Navbox episode table | content= {{Navbox episode table row| 01 | [[Marielda 01: The City of Light Pt. 1|The City of Light Pt. 1]] }} {{Navbox episode table row| 02 | [[Marielda 02: The City of Light Pt. 2|The City of Light Pt. 2]] }} {{Navbox episode table row..." wikitext text/x-wiki <templatestyles src="Navbox/style.css"></templatestyles> {{navbox |title= ''[[Marielda (season)|Marielda]]'' [[List of Seasons of Hieron episodes|episodes]] |navboxclass= navbox-marielda |state= collapsed |list1= {{Navbox episode table | content= {{Navbox episode table row| 01 | [[Marielda 01: The City of Light Pt. 1|The City of Light Pt. 1]] }} {{Navbox episode table row| 02 | [[Marielda 02: The City of Light Pt. 2|The City of Light Pt. 2]] }} {{Navbox episode table row| 03 | [[Marielda 03: The Crosstown Job Pt. 1|The Crosstown Job Pt. 1]] }} {{Navbox episode table row| 04 | [[Marielda 04: The Crosstown Job Pt. 2|The Crosstown Job Pt. 2]] }} {{Navbox episode table row| 05 | [[Marielda 05: War and Azaleas|War and Azaleas]] }} {{Navbox episode table row| 06 | [[Marielda 06: The Valentine Affair Pt. 1|The Valentine Affair Pt. 1]] }} {{Navbox episode table row| 07 | [[Marielda 07: The Valentine Affair Pt. 2|The Valentine Affair Pt. 2]] }} {{Navbox episode table row| 08 | [[Marielda 08: The Valentine Affair Pt. 3|The Valentine Affair Pt. 3]] }} {{Navbox episode table row| 09 | [[Marielda 09: The Valentine Affair Pt. 4|The Valentine Affair Pt. 4]] }} {{Navbox episode table row| 10 | [[Marielda 10: Four Conversations|Four Conversations]] }} {{Navbox episode table row| 11 | [[Marielda 11: The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 1|The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 1]] }} {{Navbox episode table row| 12 | [[Marielda 12: The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 2|The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 2]] }} {{Navbox episode table row| 13 | [[Marielda 13: The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 3|The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 3]] }} {{Navbox episode table row| 14 | [[Marielda 14: The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 4|The Killing of the King-God Samothes By The Traitor Prince Maelgwyn Pt. 4]] }} {{Navbox episode table row| PM | [[Winter in Hieron & Marielda Post Mortem|Post Mortem]] }} }} }}<noinclude> [[Category:Navboxes]]</noinclude> e4cfe381cb7376385a0e117b4688ef5d4dff490a 170 169 2024-01-04T20:43:48Z Laggardson 2 wikitext text/x-wiki <templatestyles src="Navbox/style.css"></templatestyles> {{navbox |title= ''[[Marielda (season)|Marielda]]'' [[List of Seasons of Hieron episodes|episodes]] |navboxclass= navbox-marielda |state= collapsed |list1= {{Navbox episode table | content= {{Navbox episode table row| 01 | [[Fate 01: The Dirge Pt. 1|The Dirge Pt. 1]] }} {{Navbox episode table row| 02 | [[Fate 02: The Dirge Pt. 2|The Dirge Pt. 2]] }} {{Navbox episode table row| 03 | [[Fate 03: Geringer Pt. 1|Geringer Pt. 1]] }} {{Navbox episode table row| 04 | [[Fate 04: Geringer Pt. 2|Geringer Pt. 2]] }} {{Navbox episode table row| 05 | [[Fate 05: Geringer Pt. 3|Geringer Pt. 3]] }} {{Navbox episode table row| 06 | [[Fate 06: Silky & The Solutions Pt. 1|Silky & The Solutions Pt. 1]] }} {{Navbox episode table row| 07 | [[Fate 07: Silky & The Solutions Pt. 2|Silky & The Solutions Pt. 2]] }} {{Navbox episode table row| 08 | [[Fate 08: Silky & The Solutions Pt. 3|Silky & The Solutions Pt. 3]] }} {{Navbox episode table row| 09 | [[Fate 09: MRS Montessori Pt. 1|MRS Montessori Pt. 1]] }} {{Navbox episode table row| 10 | [[Fate 10: MRS Montessori Pt. 2|MRS Montessori Pt. 2]] }} {{Navbox episode table row| 11 | [[Fate 11: MRS Montessori Pt. 3|MRS Montessori Pt. 3]] }} {{Navbox episode table row| 12 | [[Fate 12: Vacation Pt. 1|Vacation Pt. 1]] }} {{Navbox episode table row| 13 | [[Fate 13: Vacation Pt. 2|Vacation Pt. 2]] }} {{Navbox episode table row| 14 | [[Fate 14: Vacation Pt. 3|Vacation Pt. 3]] }} {{Navbox episode table row| 15 | [[Fate 15: Vacation Pt. 4|Vacation Pt. 4]] }} }} }}<noinclude> [[Category:Navboxes]]</noinclude> 4f0533d4bc20d3282bdea92e5618010bde770a55 171 170 2024-01-04T20:44:36Z Laggardson 2 wikitext text/x-wiki <templatestyles src="Navbox/style.css"></templatestyles> {{navbox |title= ''[[Fate]]'' [[List of Fate episodes|episodes]] |navboxclass= navbox-fate |state= collapsed |list1= {{Navbox episode table | content= {{Navbox episode table row| 01 | [[Fate 01: The Dirge Pt. 1|The Dirge Pt. 1]] }} {{Navbox episode table row| 02 | [[Fate 02: The Dirge Pt. 2|The Dirge Pt. 2]] }} {{Navbox episode table row| 03 | [[Fate 03: Geringer Pt. 1|Geringer Pt. 1]] }} {{Navbox episode table row| 04 | [[Fate 04: Geringer Pt. 2|Geringer Pt. 2]] }} {{Navbox episode table row| 05 | [[Fate 05: Geringer Pt. 3|Geringer Pt. 3]] }} {{Navbox episode table row| 06 | [[Fate 06: Silky & The Solutions Pt. 1|Silky & The Solutions Pt. 1]] }} {{Navbox episode table row| 07 | [[Fate 07: Silky & The Solutions Pt. 2|Silky & The Solutions Pt. 2]] }} {{Navbox episode table row| 08 | [[Fate 08: Silky & The Solutions Pt. 3|Silky & The Solutions Pt. 3]] }} {{Navbox episode table row| 09 | [[Fate 09: MRS Montessori Pt. 1|MRS Montessori Pt. 1]] }} {{Navbox episode table row| 10 | [[Fate 10: MRS Montessori Pt. 2|MRS Montessori Pt. 2]] }} {{Navbox episode table row| 11 | [[Fate 11: MRS Montessori Pt. 3|MRS Montessori Pt. 3]] }} {{Navbox episode table row| 12 | [[Fate 12: Vacation Pt. 1|Vacation Pt. 1]] }} {{Navbox episode table row| 13 | [[Fate 13: Vacation Pt. 2|Vacation Pt. 2]] }} {{Navbox episode table row| 14 | [[Fate 14: Vacation Pt. 3|Vacation Pt. 3]] }} {{Navbox episode table row| 15 | [[Fate 15: Vacation Pt. 4|Vacation Pt. 4]] }} }} }}<noinclude> [[Category:Navboxes]]</noinclude> 4599c5bf0f7836d27c50eb8c5c063877f8aaede5 List of Norfork episodes 0 61 172 131 2024-01-04T20:54:56Z Laggardson 2 wikitext text/x-wiki Episodes of Season 2: ''[[Norfork]]'', which ran from October, 2022 to present. {{Episode table | background=#FF0000 | season=2 | title=15 | airdate=10 | aux2=9 | aux2T=Runtime |episodes= {{Episode list |EpisodeNumber2=00 |Title=[[Norfork 00: The Ground Itself|The Ground Itself]] |AltDate= |Aux2=1hr 54min |ShortSummary=The cast collaboratively builds the world of Norfork using Everest Pipkin’s The Ground Itself. |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=01 |Title=[[Norfork 01: Messages|Messages]] |AltDate= |Aux2=1hr 32min |ShortSummary= Welcome to Norfork - you need to leave. Kelly receives unexpected visitors. Rabbit has a performance review. Nammi gets a call that will change everything. |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=02 |Title=[[Norfork 02: Double-Take|Double-Take]] |AltDate= |Aux2=1hr 11min |ShortSummary= The trio investigate a mysterious call. Kelly makes a plea. Nammi goes live. Rabbit loses focus at a crucial moment. |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=03 |Title=[[Norfork 03: The Right To Remain Silent|The Right To Remain Silent]] |AltDate= |Aux2=1hr 5min |ShortSummary= The trio must decide what to do after a new problem falls in their lap and they are forced to separate. Kelly follows a lead. Nammi tells the truth. Rabbit gets a new job. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=04 |Title=[[Norfork 04: Stay In Touch|Stay In Touch]] |AltDate= |Aux2=1hr 3min |ShortSummary= Scattered across Norfork and The City and dealing with an array of new problems, the trio make some tough decisions. Nammi makes a deal. Kelly returns to the scene of the crime. Rabbit deals with a personal tragedy. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=05 |Title=[[Norfork 05: Bedfellows|Bedfellows]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=06 |Title=[[Norfork 06: A Formal Introduction|A Formal Introduction]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=07 |Title=[[Norfork 07: Godly Naivete|Godly Naivete]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=08 |Title=[[Norfork 08: Mementos|Mementos]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=09 |Title=[[Norfork 09: Chance Encounters|Chance Encounters]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=10 |Title=[[Norfork 10: Norfork At Large|Norfork At Large]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=11 |Title=[[Norfork 11: Invasion|Invasion]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=12 |Title=[[Norfork 12: One Last Summer Night|One Last Summer Night]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=13 |Title=[[Norfork 13: What Justice Demands|What Justice Demands]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=14 |Title=[[Norfork 14: Simon Says|Simon Says]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=15 |Title=[[Norfork 15: The Creature & Me|The Creature & Me]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=16 |Title=[[Norfork 16: Leave, But Don't Leave Me|Leave, But Don't Leave Me]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=17 |Title=[[Norfork 17: Bitten|Bitten]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=18 |Title=[[Norfork 18: Incursion|Incursion]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=19 |Title=[[Norfork 19: Samageddon|Samageddon]] |AltDate= |Aux2= |ShortSummary=Kingdom #2, Pt. 1 |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=20 |Title=[[Norfork 20: Murphy's Law|Murphy's Law]] |AltDate= |Aux2= |ShortSummary= Kingdom #2, Pt. 2 |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=21 |Title=[[Norfork 21: Cards on the Table Pt. 1|Cards on the Table Pt. 1]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=22 |Title=[[Norfork 22: Cards on the Table Pt. 2|Cards on the Table Pt. 2]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=23 |Title=[[Norfork 23: Fugitive|Fugitive]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=24 |Title=[[Norfork 24: The Garden Pt. 1|The Garden Pt. 1]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=25 |Title=[[Norfork 25: The Garden Pt. 2|The Garden Pt. 2]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=26 |Title=[[Norfork 26: Where There's Smoke|Where There's Smoke]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=27 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=28 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} }} aec5afb74ed8e6fdd83d7163e2c3fab9b81d7f6d 173 172 2024-01-04T21:04:54Z Laggardson 2 wikitext text/x-wiki Episodes of Season 2: ''[[Norfork]]'', which ran from October, 2022 to present. {{Episode table | background=#FF0000 | season=2 | title=15 | airdate=10 | aux2=9 | aux2T=Runtime |episodes= {{Episode list |EpisodeNumber2=00 |Title=[[Norfork 00: The Ground Itself|The Ground Itself]] |AltDate= |Aux2=1hr 54min |ShortSummary=The cast collaboratively builds the world of Norfork using Everest Pipkin’s The Ground Itself. |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=01 |Title=[[Norfork 01: Messages|Messages]] |AltDate= |Aux2=1hr 32min |ShortSummary= Welcome to Norfork - you need to leave. Kelly receives unexpected visitors. Rabbit has a performance review. Nammi gets a call that will change everything. |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=02 |Title=[[Norfork 02: Double-Take|Double-Take]] |AltDate= |Aux2=1hr 11min |ShortSummary= The trio investigate a mysterious call. Kelly makes a plea. Nammi goes live. Rabbit loses focus at a crucial moment. |LineColor=FF0000 }} {{Episode list |EpisodeNumber2=03 |Title=[[Norfork 03: The Right To Remain Silent|The Right To Remain Silent]] |AltDate= |Aux2=1hr 5min |ShortSummary= The trio must decide what to do after a new problem falls in their lap and they are forced to separate. Kelly follows a lead. Nammi tells the truth. Rabbit gets a new job. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=04 |Title=[[Norfork 04: Stay In Touch|Stay In Touch]] |AltDate= |Aux2=1hr 3min |ShortSummary= Scattered across Norfork and The City and dealing with an array of new problems, the trio make some tough decisions. Nammi makes a deal. Kelly returns to the scene of the crime. Rabbit deals with a personal tragedy. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=05 |Title=[[Norfork 05: Bedfellows|Bedfellows]] |AltDate= |Aux2= |ShortSummary= Safe for the moment, the trio reconvenes. Rabbit reconnects with an old friend. Nammi feeds the hungry. Kelly tells a lie, and makes a plea. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=06 |Title=[[Norfork 06: A Formal Introduction|A Formal Introduction]] |AltDate= |Aux2=1hr 5min |ShortSummary=As the trio debate their next move the night grows dark, the shadows grow long, and their prey reveals itself to be more hunter than hunted… Nammi comes out swinging. Rabbit puts on their most charming face. Kelly’s faith in his friends is challenged by a revelation. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=07 |Title=[[Norfork 07: Godly Naivete|Godly Naivete]] |AltDate= |Aux2=1hr 12min |ShortSummary=Brooding over recent revelations, the trio’s investigation leads deeper. But with tensions high, and an adversary that could be lurking behind any corner, are they prepared for what they might find? Kelly get changed. Rabbit creates an urban legend. Nammi sets the stage. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=08 |Title=[[Norfork 08: Mementos|Mementos]] |AltDate= |Aux2=1hr 42min |ShortSummary=Arc #1 Finale. Through a door, and into a nightmare. Nammi shows off her skills. Kelly gets lucky. Rabbit is caught between two worlds - and it might just rip them apart... |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=09 |Title=[[Norfork 09: Chance Encounters|Chance Encounters]] |AltDate= |Aux2=2hr 4min |ShortSummary=Recovering from their fight against the Gateway Demon, the trio attempt to return to their normal lives - but they each find someone in their way. Nammi’s past and present collide. Rabbit unmasks a truth. Kelly finds himself pushed to the edge, and beyond. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=10 |Title=[[Norfork 10: Norfork At Large|Norfork At Large]] |AltDate= |Aux2=2hr 2min |ShortSummary=While Rabbit, Kelly, and Nammi rest, the town of Norfork defends itself from threats both within and without. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=11 |Title=[[Norfork 11: Invasion|Invasion]] |AltDate= |Aux2=1hr 35min |ShortSummary=An ominous new threat to Norfork begins to invade the trio's lives. Kelly presses his investigations. Rabbit tries to make friends. Nammi struggles to adapt to a new position. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=12 |Title=[[Norfork 12: One Last Summer Night|One Last Summer Night]] |AltDate= |Aux2=1hr 28min |ShortSummary=A long-awaited confrontation leaves the trio looking for safe harbor. And hey, where's safer than home? Kelly confronts Carmichael, face-to-face. Nammi picks favorites. Rabbit's worlds are drawn closer and closer... |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=13 |Title=[[Norfork 13: What Justice Demands|What Justice Demands]] |AltDate= |Aux2=1hr 21min |ShortSummary=After a night to themselves, the trio go in search of answers surrounding a mysterious police-scanner message in the subway tunnels of the City. Kelly draws up plans. Rabbit draws attention. Nammi draws her weapon. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=14 |Title=[[Norfork 14: Simon Says|Simon Says]] |AltDate= |Aux2=1hr 45min |ShortSummary=In opposite ends the City hospital, the trio's investigations take two equally unexpected turns, and they must decide whether anyone can be trusted. Rabbit goes to the doctor. Nammi probes for answers. Kelly confirms a theory. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=15 |Title=[[Norfork 15: The Creature & Me|The Creature & Me]] |AltDate= |Aux2=1hr 30min |ShortSummary=With new allies in tow and the scale of the current danger coming sharply into focus, the trio plan a meetup at one of their usual haunts - but how do you hunt a foe that knows your every move? Rabbit gets back to basics. Nammi realizes her mistake. Kelly loses control. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=16 |Title=[[Norfork 16: Leave, But Don't Leave Me|Leave, But Don't Leave Me]] |AltDate= |Aux2=2hr |ShortSummary=Headed to Cold’s house for help against an all-consuming threat, the trio are forced to confront their priorities. Kelly goes for broke. Nammi faces the stakes. Rabbit is confronted with an awful, life-changing choice. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=17 |Title=[[Norfork 17: Bitten|Bitten]] |AltDate= |Aux2=1hr 20min |ShortSummary=A dumpster. A rooftop. A hidden closet. As the Strangleworm closes in on the people they love and they find allies becoming enemies, the trio make desperate moves to try and get ahead. Kelly makes a promise. Nammi steels some nerves, and calms others. Rabbit makes a daring bid for control of their life. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=18 |Title=[[Norfork 18: Incursion|Incursion]] |AltDate= |Aux2=1hr 35min |ShortSummary=Arc #2 finale. With only hours left before Norfork loses itself entirely to the exponential threat to the Strangleworm, the trio make one final play for the fate of their home. But how many losses turn a victory to a defeat? |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=19 |Title=[[Norfork 19: Samageddon|Samageddon]] |AltDate= |Aux2=1hr 39min |ShortSummary=Kingdom #2, Pt. 1 |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=20 |Title=[[Norfork 20: Murphy's Law|Murphy's Law]] |AltDate= |Aux2= |ShortSummary= Kingdom #2, Pt. 2 |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=21 |Title=[[Norfork 21: Cards on the Table Pt. 1|Cards on the Table Pt. 1]] |AltDate= |Aux2=1hr 23min |ShortSummary=With the threat of the Strangleworm now behind them, the trio turn their attention back to their own lives. Rabbit dresses up. Nammi attends to her parole. Kelly gathers allies, and merits out justice. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=22 |Title=[[Norfork 22: Cards on the Table Pt. 2|Cards on the Table Pt. 2]] |AltDate= |Aux2=1hr 28min |ShortSummary=As quiet months slip by in Norfork, the trio find themselves at odds with the people closest to them. Rabbit follows up. Nammi faces family. Kelly finds the truth. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=23 |Title=[[Norfork 23: Fugitive|Fugitive]] |AltDate= |Aux2=1hr 51min |ShortSummary=Someone new arrives in Norfork. Kelly works overtime. Rabbit's research yields a promising lead. Nammi, oh Nammi... |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=24 |Title=[[Norfork 24: The Garden Pt. 1|The Garden Pt. 1]] |AltDate= |Aux2=1hr 15min |ShortSummary=Muddy, darkened skies fortell an ending, closer than most of us would like to think. The lost daughter graces this land again, in search of absolution. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=25 |Title=[[Norfork 25: The Garden Pt. 2|The Garden Pt. 2]] |AltDate= |Aux2=1hr 3min |ShortSummary=The melody of hope becomes a fallow tune echoing from the back of a parched, pale throat. The lost daughter walks to the end of the world. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=26 |Title=[[Norfork 26: Where There's Smoke|Where There's Smoke]] |AltDate= |Aux2=1hr 43min |ShortSummary=As a winter chill settles over Norfork, the trio reunites alongside new friends. But from the haze that connected them, something darker emerges too. And where there's smoke... Nammi arrives home. Rabbit rushes in. Kelly asks for help. Skidemour makes a deal. |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=27 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} {{Episode list |EpisodeNumber2=28 |Title=[[]] |AltDate= |Aux2= |ShortSummary= |LineColor=FFB27B }} }} 8b69a1747841c7a509287fa43714cf5c78cb8550 Kelly Aberdeen 0 17 174 101 2024-01-04T21:08:49Z Laggardson 2 /* Abilities */ wikitext text/x-wiki {{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = [[Norfork (City)|Norfork]] |player = [[William White]] |image1 = [[File:Kelly_Aberdeen.png]] |aliases = The Cryptid |season = ''[[Norfork]]'' |pronouns = he/him |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} == Appearance == == Personality == == Background == == Abilities == '''Burglar'''. When you break into a secure location, roll +Sharp. On a 10+ pick three, on a 7-9 pick two: you get in undetected, you get out undetected, you don’t leave a mess, you find what you were after. '''Deal with the Devil''': You sold your soul to the Devil. Pick one or two things you got out of the deal: wealth, fame, youth, sensual gratification, skill (add +1 to two ratings). Payment is due either when you die, in six months (if you picked two things) or otherwise in a year. '''Guardian''': You have a mystical ally (perhaps a spirit, alien, or cryptid) who helps and defends you. Define them, and their powers, with the Keeper’s agreement. Their look is one of: invisible, an intangible spirit thing, a weird creature, disguised as an animal, or disguised as a person. === Advancements === {{#spoiler:show=Spoilers for Episode 3|hide=Spoilers for Episode 3|+1 Sharp}} '''+1 Sharp''' (episode) '''Precise Strike'''. When you inflict harm on a monster, you can aim for a weak spot. Roll +Tough. On a 10+ you inflict +2 harm. On a 7-9 you inflict +1 harm.On a miss, you leave yourself open to the monster. (episode) '''Devastating'''. When you inflict harm, you may inflict +1 harm. (Ep17) '''Crew'''. You have a regular crew, a team of three or four people who will help you out with pretty much anything. They count as a team. (Ep20) ==Gallery== [[File:Kelly_Aberdeen.png|200px|thumb|left|Caption]] == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] e6d67fee0b508d3bc8a4abe59a41512c510b2867 175 174 2024-01-04T21:10:46Z Laggardson 2 /* Advancements */ wikitext text/x-wiki {{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = [[Norfork (City)|Norfork]] |player = [[William White]] |image1 = [[File:Kelly_Aberdeen.png]] |aliases = The Cryptid |season = ''[[Norfork]]'' |pronouns = he/him |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} == Appearance == == Personality == == Background == == Abilities == '''Burglar'''. When you break into a secure location, roll +Sharp. On a 10+ pick three, on a 7-9 pick two: you get in undetected, you get out undetected, you don’t leave a mess, you find what you were after. '''Deal with the Devil''': You sold your soul to the Devil. Pick one or two things you got out of the deal: wealth, fame, youth, sensual gratification, skill (add +1 to two ratings). Payment is due either when you die, in six months (if you picked two things) or otherwise in a year. '''Guardian''': You have a mystical ally (perhaps a spirit, alien, or cryptid) who helps and defends you. Define them, and their powers, with the Keeper’s agreement. Their look is one of: invisible, an intangible spirit thing, a weird creature, disguised as an animal, or disguised as a person. === Advancements === {{#spoiler:show=Spoilers for Episode 3|hide=Spoilers for Episode 3|'''+1 Sharp'''}} {{#spoiler:show=Spoilers for Episode #|hide=Spoilers for Episode #|'''Precise Strike'''. When you inflict harm on a monster, you can aim for a weak spot. Roll +Tough. On a 10+ you inflict +2 harm. On a 7-9 you inflict +1 harm.On a miss, you leave yourself open to the monster.}} {{#spoiler:show=Spoilers for Episode 17|hide=Spoilers for Episode 17|'''Devastating'''. When you inflict harm, you may inflict +1 harm.}} {{#spoiler:show=Spoilers for Episode 20|hide=Spoilers for Episode 20|'''Crew'''. You have a regular crew, a team of three or four people who will help you out with pretty much anything. They count as a team.}} ==Gallery== [[File:Kelly_Aberdeen.png|200px|thumb|left|Caption]] == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] 5916ac3cfe01993d9fe9c37e50a0c99ba461cd40 176 175 2024-01-04T21:11:36Z Laggardson 2 /* Advancements */ wikitext text/x-wiki {{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = [[Norfork (City)|Norfork]] |player = [[William White]] |image1 = [[File:Kelly_Aberdeen.png]] |aliases = The Cryptid |season = ''[[Norfork]]'' |pronouns = he/him |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} == Appearance == == Personality == == Background == == Abilities == '''Burglar'''. When you break into a secure location, roll +Sharp. On a 10+ pick three, on a 7-9 pick two: you get in undetected, you get out undetected, you don’t leave a mess, you find what you were after. '''Deal with the Devil''': You sold your soul to the Devil. Pick one or two things you got out of the deal: wealth, fame, youth, sensual gratification, skill (add +1 to two ratings). Payment is due either when you die, in six months (if you picked two things) or otherwise in a year. '''Guardian''': You have a mystical ally (perhaps a spirit, alien, or cryptid) who helps and defends you. Define them, and their powers, with the Keeper’s agreement. Their look is one of: invisible, an intangible spirit thing, a weird creature, disguised as an animal, or disguised as a person. === Advancements === {{#spoiler:show=Spoilers for Episode 3|hide=Spoilers for Episode 3|'''+1 Sharp'''}} <br> {{#spoiler:show=Spoilers for Episode #|hide=Spoilers for Episode #|'''Precise Strike'''. When you inflict harm on a monster, you can aim for a weak spot. Roll +Tough. On a 10+ you inflict +2 harm. On a 7-9 you inflict +1 harm.On a miss, you leave yourself open to the monster.}} <br> {{#spoiler:show=Spoilers for Episode 17|hide=Spoilers for Episode 17|'''Devastating'''. When you inflict harm, you may inflict +1 harm.}} <br> {{#spoiler:show=Spoilers for Episode 20|hide=Spoilers for Episode 20|'''Crew'''. You have a regular crew, a team of three or four people who will help you out with pretty much anything. They count as a team.}} ==Gallery== [[File:Kelly_Aberdeen.png|200px|thumb|left|Caption]] == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] d23c0a829f6e98702b23ef2ce2bb380a0d4f462a 177 176 2024-01-04T21:13:32Z Laggardson 2 /* Appearance */ wikitext text/x-wiki {{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = [[Norfork (City)|Norfork]] |player = [[William White]] |image1 = [[File:Kelly_Aberdeen.png]] |aliases = The Cryptid |season = ''[[Norfork]]'' |pronouns = he/him |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} == Appearance == Kelly is a trans man. He's thin but shredded (like a Bruce Lee type), 5'2" brown skin (latine/x) with dark brown curly, moody almost k-pop emo hair, except curly and not terribly long (longer on top, shorter on the sides and back). He wears mostly loose fitting black tops/button ups, but tattered skinny black pants and black combat boots. sharp facial features and thin rounded glasses. Kelly is linked to an entity known as The Butcher, or just "[[Butch]]" - a shadowy, humanoid figure. == Personality == == Background == == Abilities == '''Burglar'''. When you break into a secure location, roll +Sharp. On a 10+ pick three, on a 7-9 pick two: you get in undetected, you get out undetected, you don’t leave a mess, you find what you were after. '''Deal with the Devil''': You sold your soul to the Devil. Pick one or two things you got out of the deal: wealth, fame, youth, sensual gratification, skill (add +1 to two ratings). Payment is due either when you die, in six months (if you picked two things) or otherwise in a year. '''Guardian''': You have a mystical ally (perhaps a spirit, alien, or cryptid) who helps and defends you. Define them, and their powers, with the Keeper’s agreement. Their look is one of: invisible, an intangible spirit thing, a weird creature, disguised as an animal, or disguised as a person. === Advancements === {{#spoiler:show=Spoilers for Episode 3|hide=Spoilers for Episode 3|'''+1 Sharp'''}} <br> {{#spoiler:show=Spoilers for Episode #|hide=Spoilers for Episode #|'''Precise Strike'''. When you inflict harm on a monster, you can aim for a weak spot. Roll +Tough. On a 10+ you inflict +2 harm. On a 7-9 you inflict +1 harm.On a miss, you leave yourself open to the monster.}} <br> {{#spoiler:show=Spoilers for Episode 17|hide=Spoilers for Episode 17|'''Devastating'''. When you inflict harm, you may inflict +1 harm.}} <br> {{#spoiler:show=Spoilers for Episode 20|hide=Spoilers for Episode 20|'''Crew'''. You have a regular crew, a team of three or four people who will help you out with pretty much anything. They count as a team.}} ==Gallery== [[File:Kelly_Aberdeen.png|200px|thumb|left|Caption]] == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] 6ecb486614263045585fe3b23ddef8fdfb0e4df8 178 177 2024-01-04T21:16:34Z Laggardson 2 /* Background */ wikitext text/x-wiki {{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = [[Norfork (City)|Norfork]] |player = [[William White]] |image1 = [[File:Kelly_Aberdeen.png]] |aliases = The Cryptid |season = ''[[Norfork]]'' |pronouns = he/him |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} == Appearance == Kelly is a trans man. He's thin but shredded (like a Bruce Lee type), 5'2" brown skin (latine/x) with dark brown curly, moody almost k-pop emo hair, except curly and not terribly long (longer on top, shorter on the sides and back). He wears mostly loose fitting black tops/button ups, but tattered skinny black pants and black combat boots. sharp facial features and thin rounded glasses. Kelly is linked to an entity known as The Butcher, or just "[[Butch]]" - a shadowy, humanoid figure. == Personality == == Background == Kelly grew up in Norfork. After losing his parents and having his home seized by the City for a failure to keep up on mortgage payments, Kelly began to angrily seek out ways of taking back what he felt was his. He stumbled onto the forums of [[Jamie Jesigo]], and Kelly decided to take up a vigilante mantle of his own: The Cryptid. He initially attempted to be turned into a vampire, but quickly discovered that he was immune to being turned into a magical creature of any kind. While investigating the death of [[Jimmy Domal]] at the headquarters of the [[City Police]], as The Cryptid, Kelly was caught by [[Ripley Adams|Det. Ripley Adams]], who attacked and nearly killed him. Right as Kelly's life was slipping away, he was offered salvation by a mysterious entity called The Butcher (now known just as "[[Butch]]"), who told him it could save him and give him the ability to do the things he wanted to do if he allowed it in. Kelly consented, and managed to fight off Det. Ripley Adams and escape. In an attempt to learn more about the death of Jimmy Domal, Kelly approached [[Carmichael]] and offered to let himself be turned into a vampiric thrall in exchange for access to sources of information about Jimmy's death. After learning as much as he could, Kelly offered himself to Carmichael to be turned, but quickly discovered that he could not be turned, and escaped in the confusion. == Abilities == '''Burglar'''. When you break into a secure location, roll +Sharp. On a 10+ pick three, on a 7-9 pick two: you get in undetected, you get out undetected, you don’t leave a mess, you find what you were after. '''Deal with the Devil''': You sold your soul to the Devil. Pick one or two things you got out of the deal: wealth, fame, youth, sensual gratification, skill (add +1 to two ratings). Payment is due either when you die, in six months (if you picked two things) or otherwise in a year. '''Guardian''': You have a mystical ally (perhaps a spirit, alien, or cryptid) who helps and defends you. Define them, and their powers, with the Keeper’s agreement. Their look is one of: invisible, an intangible spirit thing, a weird creature, disguised as an animal, or disguised as a person. === Advancements === {{#spoiler:show=Spoilers for Episode 3|hide=Spoilers for Episode 3|'''+1 Sharp'''}} <br> {{#spoiler:show=Spoilers for Episode #|hide=Spoilers for Episode #|'''Precise Strike'''. When you inflict harm on a monster, you can aim for a weak spot. Roll +Tough. On a 10+ you inflict +2 harm. On a 7-9 you inflict +1 harm.On a miss, you leave yourself open to the monster.}} <br> {{#spoiler:show=Spoilers for Episode 17|hide=Spoilers for Episode 17|'''Devastating'''. When you inflict harm, you may inflict +1 harm.}} <br> {{#spoiler:show=Spoilers for Episode 20|hide=Spoilers for Episode 20|'''Crew'''. You have a regular crew, a team of three or four people who will help you out with pretty much anything. They count as a team.}} ==Gallery== [[File:Kelly_Aberdeen.png|200px|thumb|left|Caption]] == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] c5c7bae277a49cb219d11e9e0616920647c52f78 179 178 2024-01-04T21:19:38Z Laggardson 2 /* Appearance */ wikitext text/x-wiki {{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = [[Norfork (City)|Norfork]] |player = [[William White]] |image1 = [[File:Kelly_Aberdeen.png]] |aliases = The Cryptid |season = ''[[Norfork]]'' |pronouns = he/him |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} == Appearance == Kelly is a trans man. He's thin but shredded (like a Bruce Lee type), 5'2" brown skin (latine/x) with dark brown curly, moody almost k-pop emo hair, except curly and not terribly long (longer on top, shorter on the sides and back). He wears mostly loose fitting black tops/button ups, but tattered skinny black pants and black combat boots. sharp facial features and thin rounded glasses. == Background == Kelly grew up in Norfork. After losing his parents and having his home seized by the City for a failure to keep up on mortgage payments, Kelly began to angrily seek out ways of taking back what he felt was his. He stumbled onto the forums of [[Jamie Jesigo]], and Kelly decided to take up a vigilante mantle of his own: The Cryptid. He initially attempted to be turned into a vampire, but quickly discovered that he was immune to being turned into a magical creature of any kind. While investigating the death of [[Jimmy Domal]] at the headquarters of the [[City Police]], as The Cryptid, Kelly was caught by [[Ripley Adams|Det. Ripley Adams]], who attacked and nearly killed him. Right as Kelly's life was slipping away, he was offered salvation by a mysterious entity called The Butcher (now known just as "[[Butch]]"), who told him it could save him and give him the ability to do the things he wanted to do if he allowed it in. Kelly consented, and managed to fight off Det. Ripley Adams and escape. In an attempt to learn more about the death of Jimmy Domal, Kelly approached [[Carmichael]] and offered to let himself be turned into a vampiric thrall in exchange for access to sources of information about Jimmy's death. After learning as much as he could, Kelly offered himself to Carmichael to be turned, but quickly discovered that he could not be turned, and escaped in the confusion. == Relationships == Kelly is friends with [[Rabbit Moon]] and [[Nammi]]. Kelly is linked to an entity known as The Butcher, or just "[[Butch]]" - a shadowy, humanoid figure. == Abilities == '''Burglar'''. When you break into a secure location, roll +Sharp. On a 10+ pick three, on a 7-9 pick two: you get in undetected, you get out undetected, you don’t leave a mess, you find what you were after. '''Deal with the Devil''': You sold your soul to the Devil. Pick one or two things you got out of the deal: wealth, fame, youth, sensual gratification, skill (add +1 to two ratings). Payment is due either when you die, in six months (if you picked two things) or otherwise in a year. '''Guardian''': You have a mystical ally (perhaps a spirit, alien, or cryptid) who helps and defends you. Define them, and their powers, with the Keeper’s agreement. Their look is one of: invisible, an intangible spirit thing, a weird creature, disguised as an animal, or disguised as a person. === Advancements === {{#spoiler:show=Spoilers for Episode 3|hide=Spoilers for Episode 3|'''+1 Sharp'''}} <br> {{#spoiler:show=Spoilers for Episode #|hide=Spoilers for Episode #|'''Precise Strike'''. When you inflict harm on a monster, you can aim for a weak spot. Roll +Tough. On a 10+ you inflict +2 harm. On a 7-9 you inflict +1 harm.On a miss, you leave yourself open to the monster.}} <br> {{#spoiler:show=Spoilers for Episode 17|hide=Spoilers for Episode 17|'''Devastating'''. When you inflict harm, you may inflict +1 harm.}} <br> {{#spoiler:show=Spoilers for Episode 20|hide=Spoilers for Episode 20|'''Crew'''. You have a regular crew, a team of three or four people who will help you out with pretty much anything. They count as a team.}} ==Gallery== [[File:Kelly_Aberdeen.png|200px|thumb|left|Caption]] == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] cc6b91e15aa6a952f88f290ef9345225cf7aac4d 180 179 2024-01-04T21:21:16Z Laggardson 2 wikitext text/x-wiki Kelly Aberdeen is a player character from Season 2: [[Norfork]]. He is played by [[William White]], and uses the Crooked Playbook.{{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = [[Norfork (City)|Norfork]] |player = [[William White]] |image1 = [[File:Kelly_Aberdeen.png]] |aliases = The Cryptid |season = ''[[Norfork]]'' |pronouns = he/him |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} == Appearance == Kelly is a trans man. He's thin but shredded (like a Bruce Lee type), 5'2" brown skin (latine/x) with dark brown curly, moody almost k-pop emo hair, except curly and not terribly long (longer on top, shorter on the sides and back). He wears mostly loose fitting black tops/button ups, but tattered skinny black pants and black combat boots. sharp facial features and thin rounded glasses. == Background == Kelly grew up in Norfork. After losing his parents and having his home seized by the City for a failure to keep up on mortgage payments, Kelly began to angrily seek out ways of taking back what he felt was his. He stumbled onto the forums of [[Jamie Jesigo]], and Kelly decided to take up a vigilante mantle of his own: The Cryptid. He initially attempted to be turned into a vampire, but quickly discovered that he was immune to being turned into a magical creature of any kind. While investigating the death of [[Jimmy Domal]] at the headquarters of the [[City Police]], as The Cryptid, Kelly was caught by [[Ripley Adams|Det. Ripley Adams]], who attacked and nearly killed him. Right as Kelly's life was slipping away, he was offered salvation by a mysterious entity called The Butcher (now known just as "[[Butch]]"), who told him it could save him and give him the ability to do the things he wanted to do if he allowed it in. Kelly consented, and managed to fight off Det. Ripley Adams and escape. In an attempt to learn more about the death of Jimmy Domal, Kelly approached [[Carmichael]] and offered to let himself be turned into a vampiric thrall in exchange for access to sources of information about Jimmy's death. After learning as much as he could, Kelly offered himself to Carmichael to be turned, but quickly discovered that he could not be turned, and escaped in the confusion. == Relationships == Kelly is friends with [[Rabbit Moon]] and [[Nammi]]. Kelly is linked to an entity known as The Butcher, or just "[[Butch]]" - a shadowy, humanoid figure. == Abilities == '''Burglar'''. When you break into a secure location, roll +Sharp. On a 10+ pick three, on a 7-9 pick two: you get in undetected, you get out undetected, you don’t leave a mess, you find what you were after. '''Deal with the Devil''': You sold your soul to the Devil. Pick one or two things you got out of the deal: wealth, fame, youth, sensual gratification, skill (add +1 to two ratings). Payment is due either when you die, in six months (if you picked two things) or otherwise in a year. '''Guardian''': You have a mystical ally (perhaps a spirit, alien, or cryptid) who helps and defends you. Define them, and their powers, with the Keeper’s agreement. Their look is one of: invisible, an intangible spirit thing, a weird creature, disguised as an animal, or disguised as a person. === Advancements === {{#spoiler:show=Spoilers for Episode 3|hide=Spoilers for Episode 3|'''+1 Sharp'''}} <br> {{#spoiler:show=Spoilers for Episode #|hide=Spoilers for Episode #|'''Precise Strike'''. When you inflict harm on a monster, you can aim for a weak spot. Roll +Tough. On a 10+ you inflict +2 harm. On a 7-9 you inflict +1 harm.On a miss, you leave yourself open to the monster.}} <br> {{#spoiler:show=Spoilers for Episode 17|hide=Spoilers for Episode 17|'''Devastating'''. When you inflict harm, you may inflict +1 harm.}} <br> {{#spoiler:show=Spoilers for Episode 20|hide=Spoilers for Episode 20|'''Crew'''. You have a regular crew, a team of three or four people who will help you out with pretty much anything. They count as a team.}} ==Gallery== [[File:Kelly_Aberdeen.png|200px|thumb|left|Caption]] == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] fbd22102a5f583811784593810ddbdc9e48e250c 181 180 2024-01-04T21:21:37Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Kelly Aberdeen |playbook = The Crooked |place_of_origin = [[Norfork (City)|Norfork]] |player = [[William White]] |image1 = [[File:Kelly_Aberdeen.png]] |aliases = The Cryptid |season = ''[[Norfork]]'' |pronouns = he/him |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} Kelly Aberdeen is a player character from Season 2: [[Norfork]]. He is played by [[William White]], and uses the Crooked Playbook. == Appearance == Kelly is a trans man. He's thin but shredded (like a Bruce Lee type), 5'2" brown skin (latine/x) with dark brown curly, moody almost k-pop emo hair, except curly and not terribly long (longer on top, shorter on the sides and back). He wears mostly loose fitting black tops/button ups, but tattered skinny black pants and black combat boots. sharp facial features and thin rounded glasses. == Background == Kelly grew up in Norfork. After losing his parents and having his home seized by the City for a failure to keep up on mortgage payments, Kelly began to angrily seek out ways of taking back what he felt was his. He stumbled onto the forums of [[Jamie Jesigo]], and Kelly decided to take up a vigilante mantle of his own: The Cryptid. He initially attempted to be turned into a vampire, but quickly discovered that he was immune to being turned into a magical creature of any kind. While investigating the death of [[Jimmy Domal]] at the headquarters of the [[City Police]], as The Cryptid, Kelly was caught by [[Ripley Adams|Det. Ripley Adams]], who attacked and nearly killed him. Right as Kelly's life was slipping away, he was offered salvation by a mysterious entity called The Butcher (now known just as "[[Butch]]"), who told him it could save him and give him the ability to do the things he wanted to do if he allowed it in. Kelly consented, and managed to fight off Det. Ripley Adams and escape. In an attempt to learn more about the death of Jimmy Domal, Kelly approached [[Carmichael]] and offered to let himself be turned into a vampiric thrall in exchange for access to sources of information about Jimmy's death. After learning as much as he could, Kelly offered himself to Carmichael to be turned, but quickly discovered that he could not be turned, and escaped in the confusion. == Relationships == Kelly is friends with [[Rabbit Moon]] and [[Nammi]]. Kelly is linked to an entity known as The Butcher, or just "[[Butch]]" - a shadowy, humanoid figure. == Abilities == '''Burglar'''. When you break into a secure location, roll +Sharp. On a 10+ pick three, on a 7-9 pick two: you get in undetected, you get out undetected, you don’t leave a mess, you find what you were after. '''Deal with the Devil''': You sold your soul to the Devil. Pick one or two things you got out of the deal: wealth, fame, youth, sensual gratification, skill (add +1 to two ratings). Payment is due either when you die, in six months (if you picked two things) or otherwise in a year. '''Guardian''': You have a mystical ally (perhaps a spirit, alien, or cryptid) who helps and defends you. Define them, and their powers, with the Keeper’s agreement. Their look is one of: invisible, an intangible spirit thing, a weird creature, disguised as an animal, or disguised as a person. === Advancements === {{#spoiler:show=Spoilers for Episode 3|hide=Spoilers for Episode 3|'''+1 Sharp'''}} <br> {{#spoiler:show=Spoilers for Episode #|hide=Spoilers for Episode #|'''Precise Strike'''. When you inflict harm on a monster, you can aim for a weak spot. Roll +Tough. On a 10+ you inflict +2 harm. On a 7-9 you inflict +1 harm.On a miss, you leave yourself open to the monster.}} <br> {{#spoiler:show=Spoilers for Episode 17|hide=Spoilers for Episode 17|'''Devastating'''. When you inflict harm, you may inflict +1 harm.}} <br> {{#spoiler:show=Spoilers for Episode 20|hide=Spoilers for Episode 20|'''Crew'''. You have a regular crew, a team of three or four people who will help you out with pretty much anything. They count as a team.}} ==Gallery== [[File:Kelly_Aberdeen.png|200px|thumb|left|Caption]] == Notes == {{Reflist|group=note}} == References == {{Reflist}} [[Category:PCs]] [[Category:Norfork characters]] 08f079d768ae6438754574ceaa460b62794e0bce Nammi 0 55 182 118 2024-01-04T21:26:40Z Laggardson 2 /* Appearance */ wikitext text/x-wiki {{Infobox Character |color_theme = |title = Nammi |playbook = The Divine |place_of_origin = [[The Garden]] |player = [[Sam Darr]] |image1 = [[]] |aliases = |season = ''[[Norfork]]'' |pronouns = she/her |game = [[Monster of the Week]] |caption1 = test of caption |debut = [[Norfork 01: Messages]] }} Nammi is a player character from Season 2. She is played by Sam Darr, and uses the Divine playbook. ==Appearance== Nammi is a short (5'3), curvy girl with bright pink, long and wavy hair and large lavender eyes. She has large, pouty lips. She has pale skin and wears a lot of blush (think e-girl levels of blush). She wears a rose gold chainmail shirt that looks like it could be worn to a nightclub and rose gold greaves that are typically covered by a long flowy skirt. Nammi has an enormous sword provided to her to help enact her duties as a member of the [[Agents of Dranja]]. Her sword is a long thin silver blade with a pink hilt that has several cutsie/kawaii charms hanging off of it. When she wills it, the sword glows with a pink fire. ==Background== Nammi is a member of the [[Agents of Dranja]], which are a quasi-religious group of non-human beings that have dispatched to Earth in order to act on the behalf of their goddess [[Dranja]], most commonly to intervene in romantic relationships. They are similar to the myths of cupids of cherubic angels. Nammi was initially dispatched to Earth from [[The Garden]]) in order to intervene in [[VaccuCon]]'s apocalyptic plans in in the finale of Pest Control Season 1, but was distracted by human activities during the time she was intended to act. After her failure to act, Nammi has chosen not to return to The Garden, and instead try to find a way to make up for her failure here on Earth. She has settled in Norfork. In addition to her day job at [[Hothouse Flowers]], Nammi also regularly provides relationship advice to people in Norfork. Through her mystical connection to The Garden, Nammi can get a vague sense of when humans are important to Dranja's will and suspects that one of her friends Rabbit or Kelly are key to stopping a darkness she feels is spreading from [[The City]]. == Relationships == ==Abilities== ==Gallery== ==Notes== ==Reference== {{Category:Norfork characters}} {{Category:PCs}} 666ba20d402f6e965e69726e7fd5ab45303a1b47 Myriad Relocation Services 0 79 183 2024-01-05T05:51:08Z Laggardson 2 Created page with "{{Infobox Group |color_theme=tm |title1 = Myriad Relocation Services |leaders = |members = [[Xilin]] <br> }} Myriad Relocation Services (M.R.S.) is an organization dedicated to the rehousing of Myriads away from the threats presented by human society. A notable example includes the movement of the Loch Ness Monster. ==Background==" wikitext text/x-wiki {{Infobox Group |color_theme=tm |title1 = Myriad Relocation Services |leaders = |members = [[Xilin]] <br> }} Myriad Relocation Services (M.R.S.) is an organization dedicated to the rehousing of Myriads away from the threats presented by human society. A notable example includes the movement of the Loch Ness Monster. ==Background== 93763ff0b84f9c59763afe1042736cc6fb075ba4 Norfork 02: Double-Take 0 65 184 146 2024-01-05T06:13:40Z Laggardson 2 wikitext text/x-wiki {{Infobox episode |color_theme= |title = Double-Take |episode_number = 02 |release_date = Dec 11, 2022 |previous_episode = [[Norfork 01: Messages|Messages]] |next_episode = [[Norfork 03: The Right To Remain Silent|The Right To Remain Silent]] |length = 1hr 11min |episode_page = https://open.spotify.com/episode/2jpb4dpb3iBhFzMTHt2yIQ?si=0D-EfOOnRD2VA5uoLErq4g |transcript = |score= |cast= [[Sam Richardson]] <br> [[William White]] <br> [[Jonas Newhouse]] <br> [[Sam Darr]] |game= [[Monster of the Week]] |content_warnings= Police, blood/viscera, gun violence |arc= 1 }} ==Episode description== ==Plot== ==Cast== {{Categories}} 648d07e24ca599823b0852fc3011fa729430578a 185 184 2024-01-05T06:21:16Z Laggardson 2 /* Plot */ wikitext text/x-wiki {{Infobox episode |color_theme= |title = Double-Take |episode_number = 02 |release_date = Dec 11, 2022 |previous_episode = [[Norfork 01: Messages|Messages]] |next_episode = [[Norfork 03: The Right To Remain Silent|The Right To Remain Silent]] |length = 1hr 11min |episode_page = https://open.spotify.com/episode/2jpb4dpb3iBhFzMTHt2yIQ?si=0D-EfOOnRD2VA5uoLErq4g |transcript = |score= |cast= [[Sam Richardson]] <br> [[William White]] <br> [[Jonas Newhouse]] <br> [[Sam Darr]] |game= [[Monster of the Week]] |content_warnings= Police, blood/viscera, gun violence |arc= 1 }} ==Episode description== ==Plot== [[Rabbit Moon|Rabbit]], [[Kelly Aberdeen|Kelly]], and [[Nammi]] arrive at [[Ace Aruna|Ace]]’s house. Kelly sneaks around back while Rabbit talks to the crowd and Nammi attempts to talk to the police. Kelly makes his way inside, and gets Ace alone, but can’t convince them to come with him because he won’t admit he knows Nammi. He leaves without Ace. Rabbit talks with [[Elio Amadi]] - a [[Myriad]] and local stage magician known as “The Drippy One” he knows - but doesn’t learn much. He does notice that the window of the house is suspiciously left open. Nammi talks with the police, but can’t convince them to tell her anything. She wanders over to a news truck, where she talks to the reporter about Ace and their situation - giving them the info that a serious crime may have been committed. Kelly, Nammi, and Rabbit regroup, and return later to investigate the window. Someone spots them through the window across the street. Rabbit tries to turn into one of the police officers he saw, but accidentally turns into Kelly instead. He sneaks through the back door of the Ace’s house, and finds a bloody mess on the floor of the bedroom that ends suddenly, as well as fibers on the outside of the window that indicate someone has come in - and that they are still there. Rabbit tries to sneak up on the closet, and the door explodes with rocksalt pellets. Rabbit is caught, and leaps out the window. Kelly and Nammi, hearing the commotion, run to the window and leap inside. Kelly manages to knock the gun out of the person’s hand, and Nammi knocks them out with a magical punch. Kelly sends Rabbit to take over his shift at Cheapskate, while he and Nammi stay behind to deal with the unconscious body. ==Cast== {{Categories}} bbea14ec99902ace0644c88324314fb76a493591 Xilin 0 80 186 2024-01-05T06:36:48Z Laggardson 2 Created page with "{{Infobox Character |color_theme = |title = Xilin |people = Myriad |affiliations = [[Myriad Relocation Services|M.R.S.]] |relations = |status = alive |season = ''[[Fate]]'' |pronouns = he/him |image1 = |caption1 = |titles = }} {{Quote |I am Xilin. |author=Xilin |source=[[Fate 04: Geringer Pt. 2| Geringer Pt. 2]]}} '''Xilin''' is an enigmatic figure associated with [[Myriad Relocation Services|M.R.S]]. Keeley, Henrietta, and Maggie first encountered him in the town..." wikitext text/x-wiki {{Infobox Character |color_theme = |title = Xilin |people = Myriad |affiliations = [[Myriad Relocation Services|M.R.S.]] |relations = |status = alive |season = ''[[Fate]]'' |pronouns = he/him |image1 = |caption1 = |titles = }} {{Quote |I am Xilin. |author=Xilin |source=[[Fate 04: Geringer Pt. 2| Geringer Pt. 2]]}} '''Xilin''' is an enigmatic figure associated with [[Myriad Relocation Services|M.R.S]]. Keeley, Henrietta, and Maggie first encountered him in the town of [[Geringer (town)|Geringer]]. ==Appearance== When presenting as a human, looks like a tall, lanky, handsome Chinese man with short black hair and gold-painted nails. Dressed very hip. When not in human form, looks like a brilliant, reflective golden-colored giraffe with scales, cloven hooves, and antlers. 867e26f338436778d49664f5635b36d5e8c09293 Template:Infobox character 10 13 187 23 2024-01-05T06:40:16Z Laggardson 2 wikitext text/x-wiki <onlyinclude><infobox theme-source="color_theme"> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"> <caption source="caption"/> </image> <group> <header>Basic Information</header> <data source="pronouns"> <label>Pronouns</label> </data> <data source="titles"> <label>Titles</label> </data> <data source="aliases"> <label>Aliases</label> </data> <data source="place_of_origin"> <label>Place of Origin</label> </data> <data source="people"> <label>People</label> </data> </group> <group collapse="closed" layout="stacked"> <header>Connections</header> <data source="affiliations"> <label>Af&shy;fil&shy;i&shy;a&shy;tion(s)</label> </data> <data source="relations"> <label>Re&shy;la&shy;tion&shy;ships</label> </data> </group> <group> <header>Meta Info</header> <data source="season"> <label>Season</label> </data> <data source="game"> <label>Game</label> </data> <data source="playbook"> <label>Playbook</label> </data> <data source="player"> <label>Player</label> </data> <data source="appears_in"> <label>Appears In</label> </data> <data source="first_appearance"> <label>First Appearance</label> </data> </group> </infobox><!-- -->{{#ifeq: {{NAMESPACENUMBER}} | 0 | {{#if: {{{color_theme|}}} || [[Category:Infoboxes with missing color theme]] }} | }}</onlyinclude> <noinclude> [[Category:Infoboxes]] {{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Characters]]}} </noinclude> dc02cee63e658507334514f57c58bff71cd92501 Template:Infobox Character 10 18 188 34 2024-01-05T06:41:10Z Laggardson 2 wikitext text/x-wiki <onlyinclude><infobox theme-source="color_theme"> <title source="title"> <default>{{PAGENAME}}</default> </title> <image source="image"> <caption source="caption"/> </image> <group> <header>Basic Information</header> <data source="pronouns"> <label>Pronouns</label> </data> <data source="titles"> <label>Titles</label> </data> <data source="aliases"> <label>Aliases</label> </data> <data source="place_of_origin"> <label>Place of Origin</label> </data> <data source="people"> <label>People</label> </data> </group> <group collapse="closed" layout="stacked"> <header>Connections</header> <data source="affiliations"> <label>Af&shy;fil&shy;i&shy;a&shy;tion(s)</label> </data> <data source="relations"> <label>Re&shy;la&shy;tion&shy;ships</label> </data> </group> <group> <header>Meta Info</header> <data source="season"> <label>Season</label> </data> <data source="game"> <label>Game</label> </data> <data source="playbook"> <label>Playbook</label> </data> <data source="player"> <label>Player</label> </data> <data source="appears_in"> <label>Appears In</label> </data> <data source="first_appearance"> <label>First Appearance</label> </data> </group> </infobox><!-- -->{{#ifeq: {{NAMESPACENUMBER}} | 0 | {{#if: {{{color_theme|}}} || [[Category:Infoboxes with missing color theme]] }} | }}</onlyinclude> <noinclude> {{Documentation}} [[Category:Infoboxes]] {{#ifeq: {{NAMESPACENUMBER}} | 0 | [[Category:Characters]]}} </noinclude> 8189cfd5f67abd8d02e1ee0d663b3d1a1f3ba6e5 Martin Graves 0 51 189 96 2024-01-05T06:42:21Z Laggardson 2 wikitext text/x-wiki {{Infobox Character |color_theme = |title = Martin Graves |people = Human |affiliations = |relations = |status = dead |season = ''[[Fate]]'' |pronouns = he/him |image1 = |caption1 = |titles = The Chosen One |first_appearance = [[Fate 01: The Dirge Pt. 1|The Dirge Pt. 1]] }} {{Quote |Oh shit. |author=Martin Graves |source=[[Fate 01: The Dirge Pt. 1|The Dirge Pt. 1]]}} '''Martin Graves''' is a human Chosen One who travelled with Pest Control. ==Appearance== ==Personality== ==Background== ==References== <references /> {{NavboxFate}} [[Category:Fate characters]] c40edddb9daa534420858e23e2cb2d91c61009b1 190 189 2024-01-05T06:43:27Z Laggardson 2 /* Appearance */ wikitext text/x-wiki {{Infobox Character |color_theme = |title = Martin Graves |people = Human |affiliations = |relations = |status = dead |season = ''[[Fate]]'' |pronouns = he/him |image1 = |caption1 = |titles = The Chosen One |first_appearance = [[Fate 01: The Dirge Pt. 1|The Dirge Pt. 1]] }} {{Quote |Oh shit. |author=Martin Graves |source=[[Fate 01: The Dirge Pt. 1|The Dirge Pt. 1]]}} '''Martin Graves''' is a human Chosen One who travelled with Pest Control. ==Appearance== A white guy in his early 20s. Looks kinda like Elijah wood, with short mussed brown hair. ==Personality== ==Background== ==References== <references /> {{NavboxFate}} [[Category:Fate characters]] 17aa814b8fae89aa3a50624df986ffa1a68e9b11 Fate 01: The Dirge Pt. 1 0 81 191 2024-01-05T06:48:08Z Laggardson 2 Created page with "{{Infobox episode |color_theme= |title = The Dirge Pt. 1 |episode_number = 01 |release_date = |next_episode = [[Fate 02: The Dirge Pt. 2|The Dirge Pt. 2]] |length = 159min |episode_page = https://open.spotify.com/episode/4X2CTiM0bliMmDSjRbgOVo?si=xUjBG32OR82-he6TD2dcqQ |transcript = |score= |cast= [[Sam Richardson]] <br> [[William White]] <br> [[Jonas Newhouse]] <br> [[Sam Darr]] |game=[[Monster of the Week]] |content_warnings= Body horror |arc= 1 }}" wikitext text/x-wiki {{Infobox episode |color_theme= |title = The Dirge Pt. 1 |episode_number = 01 |release_date = |next_episode = [[Fate 02: The Dirge Pt. 2|The Dirge Pt. 2]] |length = 159min |episode_page = https://open.spotify.com/episode/4X2CTiM0bliMmDSjRbgOVo?si=xUjBG32OR82-he6TD2dcqQ |transcript = |score= |cast= [[Sam Richardson]] <br> [[William White]] <br> [[Jonas Newhouse]] <br> [[Sam Darr]] |game=[[Monster of the Week]] |content_warnings= Body horror |arc= 1 }} 01432439a240d11dcce6af958c2422060ab7743f 192 191 2024-01-05T06:49:44Z Laggardson 2 wikitext text/x-wiki {{Infobox episode |color_theme= |title = The Dirge Pt. 1 |episode_number = 01 |release_date = |next_episode = [[Fate 02: The Dirge Pt. 2|The Dirge Pt. 2]] |length = 159min |episode_page = https://open.spotify.com/episode/4X2CTiM0bliMmDSjRbgOVo?si=xUjBG32OR82-he6TD2dcqQ |transcript = |score= |cast= [[Sam Richardson]] <br> [[William White]] <br> [[Jonas Newhouse]] <br> [[Sam Darr]] |game=[[Monster of the Week]] |content_warnings= Body horror |arc= 1 }} ==Episode Description== Three strangers arrive at a run-down hotel in the middle of a rainstorm, seeking shelter and a warm place to spend the night. ==Plot== cb90ee322400e6ffe4fa42cfd0c268c4cccee0e1 Norfork 03: The Right To Remain Silent 0 82 193 2024-01-05T06:57:11Z Laggardson 2 Created page with " {{Infobox episode |color_theme= |title = The Right To Remain Silent |episode_number = 03 |release_date = Dec 25, 2022 |previous_episode = [[Norfork 02: Double-Take|Double-Take]] |next_episode = [[Norfork 04: Stay In Touch|Stay In Touch]] |length = 1hr 3min |episode_page = https://open.spotify.com/episode/5NnLQPLy7aRSXq0hazaYX1?si=DkiGPx-dSVKaLwk_DQJllA |transcript = |score= |cast= [[Sam Richardson]] <br> [[William White]] <br> [[Jonas Newhouse]] <br> [[Sam Darr]] |ga..." wikitext text/x-wiki {{Infobox episode |color_theme= |title = The Right To Remain Silent |episode_number = 03 |release_date = Dec 25, 2022 |previous_episode = [[Norfork 02: Double-Take|Double-Take]] |next_episode = [[Norfork 04: Stay In Touch|Stay In Touch]] |length = 1hr 3min |episode_page = https://open.spotify.com/episode/5NnLQPLy7aRSXq0hazaYX1?si=DkiGPx-dSVKaLwk_DQJllA |transcript = |score= |cast= [[Sam Richardson]] <br> [[William White]] <br> [[Jonas Newhouse]] <br> [[Sam Darr]] |game= [[Monster of the Week]] |content_warnings= police, gaslighting, brief hospital setting, grief |arc= 1 }} ==Episode Description== ==Plot== Kelly and Nammi deliberate over what to do about the unconscious body. They decide to stuff him into a suitcase from the Aruna house - but begin to hear police sirens in the distance. Nammi hefts the suitcase out the window, immediately into view of a police officer, who investigates. After she admits she was inside with “The Cryptid” the officer tells her she needs to come with him to the police station in the city. He calls an ambulance for the man in the suitcase. At Cheapskate, Rabbit (as Kelly) tries to pretend that they are sick, but Kelly’s boss Joanie tries to ignore it and instead sends them to deal with a joint birthday party between mothers Hannah Radek and Silvia Rui - members of the Norfork Parent’s Assemblage - who each claim to be running the party. Kelly sneaks onto the roof of the ambulance, and is whisked into The City. Once there, he sneaks into the hospital and interviews the mysterious unconscious man. The man reveals that he is a former(?) monster hunter named Simon Pip, and that he’s been looking into the disappearance of Ace’s partner. He’s not sure Ace did it, but has complicated feelings about monsters/myriads. At the City police HQ, Nammi is questioned by the officer who picked her up - as well as Det. Adams and Officer Sherridan. She admits to knowing the Cryptid. She tells them the following things: She knows the Crytpid She and the Cryptid were at the house earlier in the day She works at Hothouse Flowers Simon Pip shot the Cryptid. He was hiding in the closet. Nammi doesn’t have a last name She’s been in Norfork 2-3 years, and she was with Dranja before that (hypothetically on a religious commune) Nammi and the cryptid sometimes hang out in abandoned buildings Det Adams gives Nammi his card and asks her to call him next time she’s hanging out with the Cryptid. Nammi is moved to the cell next to Ace. Ace tells her not to talk to the police. His lawyer - a werewolf named Almos Sumati - arrives, and agrees to help Nammi as well. Almos tells her that he’s going to help her, but that it would be useful if she could give up more information on the Cryptid. At Cheapskate, Rabbit (as Kelly) is managing the competing party. Joanie pulls him aside and asks him how he’s doing, and just as she’s about to tell him to go home, Rabbit turns back into their “demon boy” form in front of her. She demands an explanation, and Rabbit tells her that his magic is messing with her perception of him - and that this was a mistake. She asks him to call Kelly to prove that he’s ok, but Kelly doesn’t answer. She tells him that he has to stay in the backroom until Kelly calls back or arrives - or she’s calling the police. Back in the cell, Ace tells Nammi that they’re worried their fiancee Kennedy is dead. They admit that if the police start looking into them, that they’ll find out Ace has been working for the Dread Ringers as a pay to earn extra cash for the wedding. Ace asks if Nammi can help them escape, and Nammi agrees - phasing them through the wall of the police station. 2916a665dd0d2e3c5eaecaa77d63584444edb176 194 193 2024-01-05T06:58:03Z Laggardson 2 /* Episode Description */ wikitext text/x-wiki {{Infobox episode |color_theme= |title = The Right To Remain Silent |episode_number = 03 |release_date = Dec 25, 2022 |previous_episode = [[Norfork 02: Double-Take|Double-Take]] |next_episode = [[Norfork 04: Stay In Touch|Stay In Touch]] |length = 1hr 3min |episode_page = https://open.spotify.com/episode/5NnLQPLy7aRSXq0hazaYX1?si=DkiGPx-dSVKaLwk_DQJllA |transcript = |score= |cast= [[Sam Richardson]] <br> [[William White]] <br> [[Jonas Newhouse]] <br> [[Sam Darr]] |game= [[Monster of the Week]] |content_warnings= police, gaslighting, brief hospital setting, grief |arc= 1 }} ==Episode Description== The trio must decide what to do after a new problem falls in their lap and they are forced to separate. Kelly follows a lead. Nammi tells the truth. Rabbit gets a new job. ==Plot== Kelly and Nammi deliberate over what to do about the unconscious body. They decide to stuff him into a suitcase from the Aruna house - but begin to hear police sirens in the distance. Nammi hefts the suitcase out the window, immediately into view of a police officer, who investigates. After she admits she was inside with “The Cryptid” the officer tells her she needs to come with him to the police station in the city. He calls an ambulance for the man in the suitcase. At Cheapskate, Rabbit (as Kelly) tries to pretend that they are sick, but Kelly’s boss Joanie tries to ignore it and instead sends them to deal with a joint birthday party between mothers Hannah Radek and Silvia Rui - members of the Norfork Parent’s Assemblage - who each claim to be running the party. Kelly sneaks onto the roof of the ambulance, and is whisked into The City. Once there, he sneaks into the hospital and interviews the mysterious unconscious man. The man reveals that he is a former(?) monster hunter named Simon Pip, and that he’s been looking into the disappearance of Ace’s partner. He’s not sure Ace did it, but has complicated feelings about monsters/myriads. At the City police HQ, Nammi is questioned by the officer who picked her up - as well as Det. Adams and Officer Sherridan. She admits to knowing the Cryptid. She tells them the following things: She knows the Crytpid She and the Cryptid were at the house earlier in the day She works at Hothouse Flowers Simon Pip shot the Cryptid. He was hiding in the closet. Nammi doesn’t have a last name She’s been in Norfork 2-3 years, and she was with Dranja before that (hypothetically on a religious commune) Nammi and the cryptid sometimes hang out in abandoned buildings Det Adams gives Nammi his card and asks her to call him next time she’s hanging out with the Cryptid. Nammi is moved to the cell next to Ace. Ace tells her not to talk to the police. His lawyer - a werewolf named Almos Sumati - arrives, and agrees to help Nammi as well. Almos tells her that he’s going to help her, but that it would be useful if she could give up more information on the Cryptid. At Cheapskate, Rabbit (as Kelly) is managing the competing party. Joanie pulls him aside and asks him how he’s doing, and just as she’s about to tell him to go home, Rabbit turns back into their “demon boy” form in front of her. She demands an explanation, and Rabbit tells her that his magic is messing with her perception of him - and that this was a mistake. She asks him to call Kelly to prove that he’s ok, but Kelly doesn’t answer. She tells him that he has to stay in the backroom until Kelly calls back or arrives - or she’s calling the police. Back in the cell, Ace tells Nammi that they’re worried their fiancee Kennedy is dead. They admit that if the police start looking into them, that they’ll find out Ace has been working for the Dread Ringers as a pay to earn extra cash for the wedding. Ace asks if Nammi can help them escape, and Nammi agrees - phasing them through the wall of the police station. 0ec0d7e797d8ab60712f684d5b48b4c7f4928d61